GPU andmetöötlus – mis see on?
Kas kuulete pidevalt GPU andmetöötlusest või kiirendusest, kuid pole kindel, mida need tähendavad? Siin on kõik, mida pead teadma.

GPU või graafikaprotsessorid on olemas kõigis elektroonilistes vooluringides, mis toodavad üht või teist tüüpi kuva, eriti arvutis.
Varased graafikaprotsessorid olid suhteliselt lihtsad. Kuid mängude, 3D-animatsiooni ja videorenderdusülesannete tulekuga, mis lükkasid protsessorid üle nende piiride, pidid appi tulema võimsamad GPU-d.
Nende uute GPU-kaartide võimsus ja keerukus kasvas aja jooksul ning erinevad ettevõtted ja teadlased otsisid viise, kuidas oma paralleelse täitmise eeliseid ära kasutada. See postitus näitab teile, kuidas see seni on läinud.
Mis on GPU?
Graafikaprotsessor või graafikaprotsessor on spetsiaalne vooluahel, mis on loodud andmetega manipuleerimiseks, et hõlbustada kuvatavate kujutiste loomist. Teisisõnu on GPU süsteem, mis loob pilte, mida näete mis tahes kuvapinnal, näiteks arvutimonitoril, nutitelefoni ekraanil, mängukonsoolidel jne.
GPU-d olid algselt lihtsad seadmed, mis ühendasid graafilised elemendid, et luua konkreetse seadme jaoks ideaalne väljund. Kuid aja jooksul ja arvutimängude tulekuga hakkas GPU-de keerukus ja võimsus kasvama, mis tõi kaasa GPGPU ehk üldotstarbeline andmetöötlus GPU-del.
Mis on GPU andmetöötlus?
GPU andmetöötlus ehk GPGPU on GPU kasutamine arvutamiseks väljaspool graafikat. See tähendab arvuti videokaardile sisseehitatud ja algselt arvutigraafika töötlemiseks mõeldud GPU-de kasutamist muud tüüpi andmete arvutamiseks, nagu teaduslikud simulatsioonid, krüptoraha kaevandamine, algebra arvutused, ilmaennustused, närvivõrgud jne.
GPU andmetöötluse sellise arengu põhjuseks on graafikatöötlusüksuste muljetavaldav areng, mis tuleneb kaasaegsete GPU-süsteemide hajutatud paralleelsest arhitektuurist.
Kuna arvuti protsessor kasvas võimsamaks ning sai hakkama ka keerukamate programmide ja mängudega, püüdsid videokaartide valmistajad sammu pidada ka tänapäevase andmetöötluse ja 3D-graafika arenguga. Nvidia avalikustas GeForce 256 aastal 1999 maailma esimese GPU-videokaardina ja asjad arenesid sealt edasi.
GPU-kaartide peamine eelis CPU-de ees on nende paralleeltöötluse arhitektuur, mis võimaldab neil töödelda suuri andmeülesandeid hajutatud paralleelselt, mis hoiab ära kitsaskohad ja protsessori külmutamise.
Millised on GPU-arvutite rakendused?
GPU-arvutite rakendusi on palju, siin on ülevaade mõnest populaarseimast kasutusviisist:
- Masinõpe ja närvivõrgud
- Hägune loogika
- Bioinformaatika
- Molekulaarne modelleerimine
- Video renderdamine
- Geomeetriline arvutus
- Kliimauuringud ja ilmaennustused
- Astrofüüsika
- Krüptograafia
- Arvuti nägemine
- Parooli murdmine
- Kvantuuringud
GPU vs CPU töötlemine
Nii GPU-d kui ka CPU-d töötlevad digitaalseid andmeid, kuid teevad seda erineval viisil. CPU või keskprotsessor on mõeldud seeriatöötluseks suurel kiirusel, samas kui GPU-d on mõeldud paralleelseks töötlemiseks palju väiksematel kiirustel. Muidugi võib protsessor kasutada hüperkeermetamist, et saada 2 lõime tuuma kohta või omada isegi kümneid südamikke, kuid need on põhimõtteliselt jadaprotsessorid.
Kui protsessoritel võib olla paar tuuma, siis tänapäevastel GPU-del on tuhandeid südamikke, näiteks Nvidia GeForceRTX 3090 millel on 10K+ tuuma. Protsessorite ees eelise saamiseks peavad andmeid olema võimalik paralleelselt töödelda, näiteks töödelda tuhandeid pilte korraga.
GPU-d vs ASIC-id
ASIC tähistab rakendusespetsiifilist integreeritud vooluringi ja see tähendab, et see suudab täita ainult ühte ülesannet – see tähendab ülesannet, milleks see oli loodud. ASIC on ainulaadne masin, mis on välja töötatud nullist ja mille ehitamiseks on vaja asjatundlikke riistvarateadmisi. ASIC-e kasutatakse tavaliselt krüptovaluutade kaevandamisel, kuna need pakuvad häid paralleeltöötluse eeliseid ja paremat efektiivsust kui GPU-d.
Peamine erinevus nende kahe vahel on aga see, et GPU-d on mitmekülgsemad. Näiteks saate GPU-de abil hõlpsasti luua krüptovaluuta kaevandamise seadme. Osad on kergesti kättesaadavad ja kui olete kaevandamisega lõpetanud, saate GPU-kaardi alati mängijatele või teistele kaevuritele müüa. ASIC-idega saab aga ainult kasutatud masinat teistele kaevandajatele müüa, sest sellega vaevalt midagi muud teha ei saa.
Peale krüptoraha kaevandamise muutub ASIC-masinatele käed külge panemine veelgi keerulisemaks, sest need pole masstooted. See erineb tugevalt GPU-süsteemidest, mida saate kõikjalt hõlpsasti konfigureerida.
GPU vs klastri andmetöötlus
Kuigi üks GPU-kaart sisaldab tuhandeid südamikke, mis lisavad tohutult võimsust igale arvutile, mille külge selle ühendate, saate teoreetiliselt lisada arvuti emaplaadile nii palju GPU-kaarte, kui see suudab, ja veelgi suurendada selle töötlemisvõimet.
Arvutiklaster seevastu viitab mitmele arvutile, mis on võrku ühendatud, et toimida ühe suure arvutina – superarvutina. Iga võrgu arvutit nimetatakse sõlmeks ja sellel võib olla mitmetuumaline protsessor, samuti üks või mitu GPU-kaarti.
Igal klastris peab olema põhisõlm, mis on eesmine arvuti, mis vastutab oma töösõlmede haldamise ja ajastamise eest. See sisaldab ka tarkvara, mis eraldab andmed ja programmid oma töötajate sõlmedele tulemuste arvutamiseks ja tagastamiseks.
GPU kiirendus vs hüperkeermestamine
Protsessor on loodud mitme ülesande korraga toimetulekuks ja seetõttu töötab see väga suurel kiirusel, ajastades töötlemisaega nende mitme protsessi vahel. Kui see aga kohtab arvutusmahukat funktsiooni, võib see kuluda mõnda aega tsüklisse, enne kui naaseb teiste protsesside juurde. Selle tulemuseks on tavaliselt arvuti üldine aeglustumine ja halvematel juhtudel süsteemi täielik külmutamine.
Arvutidisainerid saavad seda kohutavat stsenaariumi vältida, kasutades hüperkeerme või GPU kiirendust. Hüperlõime võimaldab ühel CPU tuumal toimida kahe töötlemislõimena. Seega, kui üks lõim jääb arvutusmahukasse ahelasse, suudab teine lõim süsteemi siiski koos hoida.
Kaasaegsetel arvutitel on nüüd mitu tuuma 2 kuni 4, 8, 16, 32 jne. Lisaks on neil hüperkeermestamine, nii et 2-tuumaline CPU pakub 4 lõime, 4-tuumaline 8 lõime ja nii edasi.
Hüperkeermestamine mitmetuumaliste protsessoritega lahendab enamiku arvutusprobleeme, hoiab ära kitsaskohad ja tagab tipptasemel jõudluse lihtsate mängude, muusika tootmise ning väikeste graafika-, video- ja masinõppeprojektidega. Kuid kui vajate rohkem energiat, on GPU sageli õige lahendus.
GPU- või riistvarakiirendus on tarkvararakenduse võime kasutada GPU paralleeltöötlusvõimsust, et töödelda suurel hulgal andmeid, ilma protsessorit ummistamata. Paljude professionaalsete rakenduste hea toimimine sõltub GPU kiirendusest. Nende hulka kuuluvad video- ja animatsioonikujundus-/renderdusprogrammid, kodeerijad, krüptograafia, suured närvivõrgud jne.
GPGPU programmeerimise põhitõed
GPU-de üldotstarbeline programmeerimine tehti algselt kasutades DirectX ja OpenGL raamatukogud. Need olid aga mõeldud rangelt graafika arendamiseks, nii et töötamiseks pidite oma andmed ümber graafilisteks mudeliteks.
Õnneks on aastate jooksul GPGPU-s tehtud suuri edusamme, mille tulemuseks on raamatukogud, programmeerimiskeeled ja raamistikud. Kõige populaarsem neist raamistikest on Nvidia CUDA.
CUDA muudab iga arendaja jaoks lihtsaks sukelduda GPU programmeerimisse, ilma et nad peaksid teadma klassikalise GPU programmeerimise nüansse. See pakub funktsioone, mis täiustavad arendust peale graafika, kusjuures paljudel seadmetel on isegi masinõppe spetsiifilised funktsioonid.
Saadaolevad teegid hõlbustavad ka uute GPU-kiirendusega programmide loomist nullist või eelnevalt kirjutatud programmide kohandamist paralleeltöötluseks. Valite õige teegi, optimeerite oma koodi paralleelsete tsüklite jaoks, kompileerite uuesti ja ongi kõik.
CUDA tuumad vs vooprotsessorid
Sageli puutute terminitega kokku Cuda südamikud ja voogprotsessorid. Mõlemad terminid viitavad lihtsalt GPU tuumale või Aritmeetilised loogikaühikud GPU-st. CUDA Core on Nvidia patenteeritud tehnoloogia, Streami protsessorid aga AMD-lt.
Teine termin, millega võite kokku puutuda, on Streaming Multi-Processor või SM. See on veel üks Nvidia tehnoloogia, mis algselt rühmitas 8 CUDA südamikku SM-i kohta. See teostab korraga 32-lõimelist koolutust, kasutades käsu kohta 4 taktitsüklit. Uuematel kujundustel on nüüd üle 100 tuuma voogesituse mitme protsessori kohta.
Populaarseimad GPU keeled ja raamatukogud
Seal on nii palju teeke ja keeli, mis töötavad nii Nvidia CUDA kui ka AMD platvormidel. Järgnevad on vaid mõned:
- Nvidia cuBLAS – CUDA põhilised lineaaralgebra alamprogrammid
- cuDNN - sügavate närvivõrkude raamatukogu
- OpenCL – Avatud standard paralleelseks programmeerimiseks
- Openmp - AMD GPU jaoks
- HIP - C++ raamatukogu
- Nvidia cuRAND - Juhuslike arvude genereerimine
- mansett – Kiire Fourier’ teisenduse jaoks
- Nvidia tuumaelektrijaam – 2D pildi- ja signaalitöötlus
- GPU VSIPL – Vektorkujutise ja signaali töötlemine
- OpenCV - GPU raamatukogu arvuti nägemiseks
- OpenACC – Keel paralleelseks arendamiseks
- PyCU-s - Python CUDA platvormile
- TensorRT – CUDA süvaõpe
- CUDA C++ - C++ keel CUDA jaoks
- CUDA C – C-keel CUDA jaoks
- CUDA Fortran – CUDA FORTRANi arendajatele
Parimad GPU-klastriprojektid
2022. aasta juuni seisuga on 8 maailma kümnest kiireimast superarvutist GPU-kiirendusega. Nad kõik jagavad ka Linuxi operatsioonisüsteemi ja on järgmised:
| auaste | Nimi | Petaflops | CPU südamikud | GPU tuumad | Võimsus (kW) | Tootmisaasta |
| 1. | Piir | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | TUBA | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | Summit | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | Mäeahelik | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | Perlmutter | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | tianhe-2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | Adastra | 46.1 | 21,632 | 297,440 | 921 | 2022 |
Järeldus
Kui olete jõudnud selle GPU andmetöötluse ja kõige sellega kaasneva sukeldumise lõppu, oleksite nüüdseks saanud aimu selle võimsusest ja ulatusest.
Lisateabe saamiseks võite tutvuda arendajaplatvormiga Nvidia siin või see AMD siin.




