GPU computing - hvad er det?

Bliver du ved med at høre om GPU-beregning eller acceleration, men er du ikke sikker på, hvad de betyder? Her er alt, hvad du behøver at vide.

GPU eller Graphics Processing Units er til stede i alle elektroniske kredsløb, der producerer den ene eller den anden form for skærm, især computeren.

Tidlige grafikprocessorer var relativt enkle. Men med fremkomsten af ​​spil, 3D-animation og videogengivelsesopgaver, der skubbede CPU'er ud over deres grænser, var mere kraftfulde GPU'er nødt til at komme til undsætning.

Disse nye GPU-kort voksede i kraft og kompleksitet over tid, hvor forskellige virksomheder og forskere søgte efter måder at udnytte deres parallelle eksekveringsfordel. Dette indlæg viser dig, hvordan det er gået indtil videre.

Hvad er en GPU?

En GPU eller Graphics Processing Unit er et specialiseret kredsløb designet til manipulation af data for at hjælpe med at skabe billeder til visning. Med andre ord er en GPU et system, der skaber de billeder, du ser på enhver skærmoverflade, såsom computerskærmen, smartphoneskærmen, spillekonsoller og så videre.

GPU'er var oprindeligt ligetil enheder, der satte grafiske elementer sammen for at skabe et ideelt output til en bestemt enhed. Men med tiden, og med fremkomsten af ​​computerspil, begyndte GPU'er at vokse i kompleksitet og kraft, hvilket fødte GPGPU eller General Purpose Computing på GPU'er.

Hvad er GPU Computing?

GPU computing eller GPGPU er brugen af ​​en GPU til beregning ud over grafik. Det betyder at bruge GPU'erne indlejret i en computers videokort og oprindeligt beregnet til behandling af computergrafik til beregning af andre typer data, såsom videnskabelige simuleringer, cryptocurrency-mining, algebra-beregninger, vejrudsigter, neurale netværk og så videre.

Årsagen til denne udvikling af GPU-databehandling kommer fra den imponerende udvikling af grafikbehandlingsenheder, som kommer fra den distribuerede parallelle arkitektur i moderne GPU-systemer.

Efterhånden som computerens CPU blev mere kraftfuld og kunne håndtere mere komplekse programmer og spil, forsøgte videokortproducenter også at følge med udviklingen inden for moderne computer- og 3D-grafik. Nvidia afslørede GeForce 256 i 1999 som verdens første GPU-skærmkort, og tingene udviklede sig derfra.

Den største fordel ved GPU-kort i forhold til CPU'er er deres parallelle behandlingsarkitektur, som gør dem i stand til at behandle store dataopgaver på en distribueret, parallel måde, der forhindrer flaskehalse og CPU-frysning.

Hvad er applikationerne til GPU Computing?

Anvendelserne af GPU-computere er mange, her er et kig på nogle af de mest populære anvendelser:

  1. Maskinlæring og neurale netværk
  2. Uklar logik
  3. Bio-informatik
  4. Molekylær modellering
  5. Videogengivelse
  6. Geometrisk databehandling
  7. Klimaforskning og vejrudsigt
  8. Astrofysik
  9. Kryptografi
  10. Computer vision
  11. Adgangskodeknækning
  12. Kvanteforskning

GPU vs CPU-behandling

GPU'er og CPU'er behandler begge digitale data, men de gør det på forskellige måder. CPU'en eller den centrale behandlingsenhed er designet til seriel behandling ved høje hastigheder, mens GPU'er er designet til parallel behandling ved meget lavere hastigheder. Selvfølgelig kan en CPU bruge hyper-threading til at få 2 tråde per kerne, eller endda have snesevis af kerner, men de er grundlæggende serielle processorer.

Mens CPU'er kan have nogle få kerner, kommer moderne GPU'er med tusindvis af kerner, f.eks. Nvidia GeForceRTX 3090 som har 10K+ kerner. For at få en fordel i forhold til CPU'er skal dataene dog være i stand til parallel behandling, såsom at behandle en strøm, der indeholder tusindvis af billeder på en gang.

GPU'er vs ASIC'er

ASIC står for Application Specific Integrated Circuit, og det betyder, at den kun kan udføre én opgave – altså den opgave, den er designet til at udføre. En ASIC er en unik maskine, der er udviklet fra bunden og kræver ekspert hardware viden at bygge. ASIC'er bruges almindeligvis i cryptocurrency-mining, da de tilbyder gode parallelbehandlingsfordele og bedre effektivitet end GPU'er.

Den største forskel mellem de to er dog, at GPU'er er mere alsidige. For eksempel kan du nemt bygge en cryptocurrency-minerig ved hjælp af GPU'er. Delene er let tilgængelige, og hvis du er færdig med minedrift, kan du altid sælge GPU-kortet til gamere eller andre minearbejdere. Med ASIC'er kan du dog kun sælge en brugt maskine til andre minearbejdere, fordi du næsten ikke kan gøre andet med den.

Ud over cryptocurrency-mining bliver det endnu sværere at lægge hænderne på en ASIC-maskine, fordi de ikke er masseprodukter. Dette står i skarp kontrast til GPU-systemer, som du kan få overalt og nemt konfigurere.

GPU vs Cluster Computing

Mens et enkelt GPU-kort indeholder tusindvis af kerner, som tilføjer enorm kraft til enhver computer, du tilslutter det til, kan du teoretisk tilføje lige så mange GPU-kort til computerens bundkort, som det kan håndtere, og yderligere øge dets behandlingsevne.

En computerklynge henviser på den anden side til flere computere, der er forbundet i netværk for at fungere som en stor computer - en supercomputer. Hver computer på netværket kaldes en node og kan have en multi-core CPU, samt et eller flere GPU-kort ombord.

Hver klynge skal have en masterknude, som er den forreste computer, der er ansvarlig for at administrere og planlægge sine arbejderknudepunkter. Det vil også indeholde software, der allokerer data og programmer til dets arbejdsknudepunkter for at beregne og returnere resultater.

GPU Acceleration vs Hyper-threading

CPU'en er designet til at håndtere flere opgaver på én gang, og det er derfor, den kører med meget høje hastigheder og planlægger behandlingstid mellem disse flere processer. Men når den støder på en beregningsintensiv funktion, kan den tilbringe et stykke tid i løkken, før den vender tilbage til de andre processer. Dette resulterer normalt i en generel opbremsning af computeren og i værre tilfælde en fuldstændig fastfrysning af systemet.

Computerdesignere kan undgå dette frygtede scenario ved enten at bruge hyper-threading eller GPU-acceleration. Hyper-threading gør det muligt for en enkelt CPU-kerne at fungere som to behandlingstråde. Så når en tråd er fanget i en beregningsintensiv loop, kan den anden tråd stadig holde systemet sammen.

Moderne computere har nu flere kerner fra 2 til 4, 8, 16, 32 og så videre. Plus, de har hyper-threading, så en 2-core CPU tilbyder 4 tråde, en 4-core tilbyder 8 tråde og så videre.

Hyper-threading med multi-core CPU'er vil løse de fleste computerproblemer, forhindre flaskehalse og levere topydelse med simple spil, musikproduktion og små grafik-, video- og maskinlæringsprojekter. Men når du har brug for mere strøm end det, så er en GPU ofte den rigtige løsning.

GPU eller hardwareacceleration er en softwareapplikations evne til at udnytte en GPU's parallelle processorkraft til at knuse store mængder data uden at spolere CPU'en. Mange professionelle applikationer er afhængige af GPU-acceleration for at fungere godt. Disse omfatter video- og animationsdesign/gengivelsesprogrammer, indkodere, kryptografi, store neurale netværk og så videre.

Grundlæggende om GPGPU-programmering

Generel programmering af GPU'er blev oprindeligt udført vha DirectX og OpenGL biblioteker. Disse blev designet udelukkende til grafisk udvikling, så du var nødt til at omforme dine data til grafisk-lignende modeller for at fungere.

Heldigvis har der været store fremskridt i GPGPU gennem årene, hvilket har ført til biblioteker, programmeringssprog og rammer. Den mest populære af disse rammer er CUDA fra Nvidia.

CUDA gør det nemt for enhver udvikler at dykke ned i GPU-programmering uden at skulle kende til det fine ved klassisk GPU-programmering. Det giver funktioner, der forbedrer udvikling ud over grafik, med mange enheder endda med maskinlæringsspecifikke funktioner.

Tilgængelige biblioteker gør det også nemt at skabe nye GPU-accelererede programmer fra bunden eller at tilpasse forskrevne programmer til parallel behandling. Du vælger det rigtige bibliotek, optimerer din kode til parallelle loops, rekompilerer, og det er det.

CUDA Cores vs Stream Processorer

Ofte vil du støde på vilkårene Cuda-kerner og stream processorer. Begge udtryk refererer blot til GPU-kernen eller Aritmetiske logiske enheder af en GPU. CUDA Core er en proprietær teknologi fra Nvidia, mens Stream-processorer er fra AMD.

Et andet udtryk, du kan støde på, er Streaming Multi-Processor eller SM. Dette er en anden Nvidia-teknologi, der oprindeligt grupperede 8 CUDA-kerner pr. SM. Den udfører 32-tråds warps ad gangen ved at bruge 4 clock-cyklusser pr. kommando. Nyere design har nu over 100 kerner pr. streaming multi-processor.

Top GPU-sprog og biblioteker

Der er så mange biblioteker og sprog derude, der fungerer på både Nvidia CUDA og AMD platforme. Følgende er blot nogle få:

  1. Nvidia cuBLAS – Grundlæggende lineære algebra-underprogrammer til CUDA
  2. cuDNN – Dybt neurale netværksbibliotek
  3. OpenCL – Åben standard for parallel programmering
  4. Openmp – Til AMD GPU'er
  5. HOFTE – C++ bibliotek
  6. Nvidia curAND – Generering af tilfældige tal
  7. cuFFT – Til Fast Fourier-transformation
  8. Nvidia NPP – 2D billed- og signalbehandling
  9. GPU VSIPL – Vektorbillede og signalbehandling
  10. OpenCV – GPU-bibliotek til computervision
  11. ÅbnACC – Sprog til parallel udvikling
  12. I PyCU – Python til CUDA platform
  13. TensorRT – Dyb læring for CUDA
  14. CUDA C++ – C++ sprog til CUDA
  15. CUDA C – C-sprog for CUDA
  16. CUDA Fortran – CUDA for FORTRAN-udviklere

Top GPU-klyngeprojekter

Fra juni 2022 er 8 af de 10 hurtigste supercomputere i verden GPU-accelererede. De deler også Linux OS og er som følger:

Rang (Kolonne)NavnPetaflopsCPU-kernerGPU-kernerEffekt (kW)År
1.Frontier1,102591,8728,138,24021,1002022
2.VÆRELSE151.9075,2641,034,8802,9002022
3.Summit148.6202,7522,211,84010,0962018
4.Sierra94.64190,0801,382,4007,4382018
5.Perlmutter64.59N / AN / A2,5892021
6.Selene63.4671,680483,8402,6462020
7.Tianhe-261.445427,0084,554,75218,4822013
8.Adastra46.121,632297,4409212022

Konklusion

Når du når slutningen af ​​dette dyk i GPU-computere og alt, hvad der følger med det, burde du have fået en idé om dens kraft og omfang nu.

For yderligere information kan du tjekke udviklerplatformen til Nvidia her eller det af AMD her.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke er en computerentusiast, der elsker at læse en bred vifte af bøger. Han har en præference for Linux frem for Windows/Mac og har brugt
Ubuntu siden dens tidlige dage. Du kan fange ham på twitter via bongotrax

Artikler: 298

Modtag teknologiske ting

Tech trends, startup trends, anmeldelser, online indkomst, webværktøjer og markedsføring en eller to gange om måneden