GPU-laskenta – mitä se on?
GPU- tai grafiikkaprosessointiyksiköitä on kaikissa elektronisissa piireissä, jotka tuottavat yhden tai toisen tyyppistä näyttöä, erityisesti tietokoneessa.
Varhaiset grafiikkaprosessorit olivat suhteellisen yksinkertaisia. Mutta pelien, 3D-animaatioiden ja videon renderöintitehtävien myötä, jotka työnsivät suorittimia niiden rajojen ulkopuolelle, tehokkaammat GPU:t joutuivat apuun.
Näiden uusien GPU-korttien teho ja monimutkaisuus kasvoivat ajan myötä, kun eri yritykset ja tutkijat etsivät tapoja hyödyntää rinnakkaisen suorituskyvyn etujaan. Tämä postaus näyttää, miten se on mennyt tähän asti.
Mikä on GPU?
Grafiikkasuoritin tai grafiikkaprosessointiyksikkö on erikoistunut piiri, joka on suunniteltu tietojen käsittelyyn auttamaan kuvien luomisessa näyttöä varten. Toisin sanoen GPU on järjestelmä, joka luo kuvat, jotka näet millä tahansa näyttöpinnalla, kuten tietokoneen näytöllä, älypuhelimen näytöllä, pelikonsoleissa ja niin edelleen.
GPU:t olivat alun perin yksinkertaisia laitteita, jotka yhdistävät graafisia elementtejä luodakseen ihanteellisen tulosteen tietylle laitteelle. Ajan myötä ja tietokonepelaamisen myötä grafiikkasuorittimet alkoivat kuitenkin monimutkaistaa ja tehostaa, mikä synnytti GPGPU tai yleiskäyttöinen Tietojenkäsittely GPU:illa.
Mitä on GPU-laskenta?
GPU-laskenta tai GPGPU on GPU:n käyttöä grafiikan lisäksi laskemiseen. Tämä tarkoittaa, että käytetään tietokoneen näytönohjainkorttiin upotettuja GPU:ita, jotka on alun perin tarkoitettu tietokonegrafiikan käsittelyyn muuntyyppisten tietojen, kuten tieteellisten simulaatioiden, laskemiseen, kryptovaluutta kaivostoiminta, algebralaskut, sääennusteet, hermoverkot ja niin edelleen.
Syy tähän GPU-laskennan kehitykseen johtuu grafiikan prosessointiyksiköiden vaikuttavasta kehityksestä, joka tulee nykyaikaisten GPU-järjestelmien hajautetusta rinnakkaisarkkitehtuurista.
Kun tietokoneen suoritin kasvoi tehokkaammaksi ja pystyi käsittelemään monimutkaisempia ohjelmia ja pelejä, näytönohjainten valmistajat yrittivät myös pysyä modernin tietojenkäsittelyn ja 3D-grafiikan kehityksen mukana. Nvidia julkisti GeForce 256 vuonna 1999 maailman ensimmäisenä GPU-näytönohjaimena, ja asiat kehittyivät sieltä.
GPU-korttien suurin etu prosessoreihin verrattuna on niiden rinnakkaiskäsittelyarkkitehtuuri, jonka ansiosta ne pystyvät käsittelemään suuria datatehtäviä hajautetusti, rinnakkain, mikä estää pullonkauloja ja suorittimen jäätymisen.
Mitkä ovat GPU-laskentasovellukset?
GPU-laskennan sovelluksia on monia, tässä on katsaus joihinkin suosituimpiin käyttötarkoituksiin:
- Koneoppiminen ja neuroverkot
- Sumea logiikka
- Bioinformatiikka
- Molekyylimallinnus
- Videon renderöinti
- Geometrinen laskenta
- Ilmastotutkimus ja sääennusteet
- Astrophysics
- Cryptography
- Tietokoneen visio
- Salasanan murtaminen
- Kvanttitutkimus
GPU vs CPU Processing
GPU:t ja CPU:t käsittelevät digitaalista dataa, mutta ne tekevät sen eri tavoin. CPU tai keskusyksikkö on suunniteltu sarjakäsittelyyn suurilla nopeuksilla, kun taas GPU:t on suunniteltu rinnakkaiskäsittelyyn paljon pienemmillä nopeuksilla. Tietenkin suoritin voi käyttää hypersäikeistystä saadakseen 2 säiettä ydintä kohti tai jopa kymmeniä ytimiä, mutta ne ovat pohjimmiltaan sarjasuorittimia.
Vaikka prosessoreissa voi olla muutama ydin, nykyaikaisissa GPU:issa on tuhansia ytimiä, esimerkiksi Nvidia GeForce RTX 3090 jossa on 10K+ ydintä. Saadakseen etua prosessoreihin verrattuna, tietojen on kyettävä rinnakkaiseen käsittelyyn, kuten prosessoimaan tuhansia kuvia kerrallaan sisältävä virta.
GPU vs ASIC
ASIC on lyhenne sanoista Application Specific Integrated Circuit, mikä tarkoittaa, että se voi suorittaa vain yhden tehtävän – eli tehtävän, jota se on suunniteltu suorittamaan. ASIC on ainutlaatuinen kone, joka on kehitetty tyhjästä ja jonka rakentaminen vaatii asiantuntevaa laitteistotietoa. ASIC-kortteja käytetään yleisesti kryptovaluutan louhinnassa, koska ne tarjoavat hyviä rinnakkaiskäsittelyetuja ja paremman tehokkuuden kuin GPU:t.
Suurin ero näiden kahden välillä on kuitenkin se, että GPU:t ovat monipuolisempia. Voit esimerkiksi rakentaa helposti kryptovaluutan louhintalaitteen GPU:iden avulla. Osat ovat helposti saatavilla, ja jos olet lopettanut louhinnan, voit aina myydä GPU-kortin pelaajille tai muille kaivostyöntekijöille. ASIC:illa voit kuitenkin myydä vain käytetyn koneen muille kaivostyöläisille, koska sillä tuskin voi tehdä muuta.
Kryptovaluutan louhinnan lisäksi ASIC-koneen käyttö on entistä vaikeampaa, koska ne eivät ole massatuotteita. Tämä eroaa voimakkaasti GPU-järjestelmistä, joita voit saada kaikkialta ja helposti määrittää.
GPU vs klusterilaskenta
Vaikka yksittäinen GPU-kortti sisältää tuhansia ytimiä, jotka lisäävät valtavasti tehoa mihin tahansa tietokoneeseen, johon sen liität, voit teoriassa lisätä tietokoneen emolevyyn niin monta GPU-korttia kuin se pystyy käsittelemään ja lisätä sen prosessointikykyä entisestään.
Tietokoneklusteri puolestaan viittaa useisiin tietokoneisiin, jotka on verkotettu yhteen toimimaan yhtenä suurena tietokoneena - supertietokoneena. Jokaista verkon tietokonetta kutsutaan solmuksi, ja siinä voi olla moniytiminen prosessori sekä yksi tai useampi GPU-kortti.
Jokaisella klusterilla on oltava pääsolmu, joka on etutietokone, joka vastaa työsolmujensa hallinnasta ja ajoittamisesta. Se sisältää myös ohjelmiston, joka varaa dataa ja ohjelmia työntekijöiden solmuille tulosten laskemiseksi ja palauttamiseksi.
GPU-kiihtyvyys vs hypersäikeistys
CPU on suunniteltu käsittelemään useita tehtäviä kerralla, ja siksi se toimii erittäin suurilla nopeuksilla ajoittaen käsittelyajan näiden useiden prosessien välillä. Kuitenkin, kun se kohtaa laskentaintensiivisen toiminnon, se saattaa viettää jonkin aikaa silmukassa ennen kuin se palaa muihin prosesseihin. Tämä johtaa yleensä tietokoneen yleiseen hidastumiseen ja pahemmissa tapauksissa järjestelmän täydelliseen jumiutumiseen.
Tietokonesuunnittelijat voivat välttää tämän pelätyn skenaarion joko käyttämällä hypersäikeistystä tai GPU-kiihdytystä. Hyper-säikeen ansiosta yksi CPU-ydin voi toimia kahtena käsittelysäietenä. Joten kun yksi säie jää loukkuun laskentaa vaativaan silmukkaan, toinen säie voi silti pitää järjestelmän koossa.
Nykyaikaisissa tietokoneissa on nyt useita ytimiä 2-4, 8, 16, 32 ja niin edelleen. Lisäksi niissä on hypersäikeistys, joten 2-ytiminen CPU tarjoaa 4 säiettä, 4-ytiminen 8 säiettä ja niin edelleen.
Hyper-säikeistys moniytimisillä prosessoreilla ratkaisee useimmat laskentaongelmat, ehkäisee pullonkauloja ja tarjoaa huippusuorituskyvyn yksinkertaisilla peleillä, musiikin tuotannolla ja pienillä grafiikka-, video- ja koneoppimisprojekteilla. Mutta kun tarvitset enemmän tehoa, GPU on usein oikea ratkaisu.
GPU- tai laitteistokiihdytys on ohjelmistosovelluksen kyky hyödyntää GPU:n rinnakkaista prosessointitehoa murskaamaan suuria määriä dataa ilman, että prosessori pysähtyy. Monet ammattisovellukset edellyttävät GPU-kiihdytystä toimiakseen hyvin. Näitä ovat video- ja animaatiosuunnittelu-/renderöintiohjelmat, kooderit, kryptografia, suuret neuroverkot ja niin edelleen.
GPGPU-ohjelmoinnin perusteet
GPU:iden yleisohjelmointi tehtiin alun perin käyttämällä DirectX ja OpenGL kirjastot. Nämä oli kuitenkin suunniteltu tiukasti grafiikan kehittämiseen, joten sinun oli käytettävä tietosi uudelleen graafisiksi malleiksi toimiaksesi.
Onneksi GPGPU:ssa on tapahtunut suuria edistysaskeleita vuosien varrella, mikä on johtanut kirjastoihin, ohjelmointikieliin ja kehyksiin. Näistä kehyksistä suosituin on Nvidian CUDA.
CUDA tekee kaikkien kehittäjien helpoksi sukeltaa GPU-ohjelmointiin ilman, että heidän tarvitsee tuntea klassisen GPU-ohjelmoinnin ytimekkäät ominaisuudet. Se tarjoaa ominaisuuksia, jotka tehostavat kehitystä grafiikan lisäksi, ja monissa yksiköissä on jopa koneoppimiseen liittyviä toimintoja.
Saatavilla olevat kirjastot helpottavat myös uusien GPU-kiihdytettyjen ohjelmien luomista alusta alkaen tai esikirjoitettujen ohjelmien mukauttamista rinnakkaiskäsittelyyn. Valitset oikean kirjaston, optimoit koodisi rinnakkaisia silmukoita varten, käännät uudelleen ja siinä kaikki.
CUDA-ytimet vs Stream-prosessorit
Usein törmäät termeihin Cuda-ytimet ja stream -prosessorit. Molemmat termit viittaavat yksinkertaisesti GPU-ytimeen tai Aritmeettiset logiikkayksiköt GPU:sta. CUDA Core on Nvidian patentoitu tekniikka, kun taas Stream-prosessorit ovat AMD:ltä.
Toinen termi, jonka saatat törmätä, on Streaming Multi-Processor tai SM. Tämä on toinen Nvidia-tekniikka, joka alun perin ryhmitteli 8 CUDA-ydintä SM:ää kohti. Se suorittaa 32-säikeistä loimia kerrallaan käyttämällä 4 kellojaksoa komentoa kohden. Uudemmissa malleissa on nyt yli 100 ydintä streaming-moniprosessoria kohden.
Suosituimmat GPU-kielet ja -kirjastot
Siellä on niin monia kirjastoja ja kieliä, jotka toimivat sekä Nvidia CUDA- että AMD-alustoilla. Seuraavassa on vain muutamia:
- Nvidia cuBLAS – Lineaarialgebran perusaliohjelmat CUDA:lle
- cuDNN – Deep neuroverkkokirjasto
- OpenCL – Avoin standardi rinnakkaisohjelmointiin
- Openmp – AMD GPU:lle
- HIP – C++-kirjasto
- Nvidia cuRAND – Satunnaislukujen generointi
- cuFFT – Nopealle Fourier-muunnokselle
- Nvidian ydinvoimala – 2D-kuvan ja signaalin käsittely
- GPU VSIPL – Vektorikuvan ja signaalin käsittely
- OpenCV - GPU-kirjasto tietokonenäkemiseen
- OpenACC – Kieli rinnakkaiseen kehitykseen
- PyCUDA – Python CUDA-alustalle
- TensorRT – Syvä oppiminen CUDA:lle
- CUDA C++ – C++-kieli CUDA:lle
- CUDA C – C-kieli CUDA:lle
- CUDA Fortran – CUDA FORTRAN-kehittäjille
Parhaat GPU-klusteriprojektit
Kesäkuussa 2022 kahdeksassa maailman 8 nopeimmasta supertietokoneesta on GPU-kiihdytetty. Niillä kaikilla on myös Linux-käyttöjärjestelmä, ja ne ovat seuraavat:
arvo | Nimi | Petaflops | CPU-ytimet | GPU-ytimet | Teho (kW) | Vuosi |
1. | Raja | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
2. | HUONE | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
3. | Huippukokous | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
4. | Sierra | 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 |
Yhteenveto
Kun olet päässyt tämän GPU-laskentaan ja kaikkeen siihen liittyvään sukellukseen, sinun olisi pitänyt saada käsitys sen tehosta ja laajuudesta jo nyt.
Lisätietoja saat tutustumalla kehittäjäalustaan Nvidia täällä tai AMD täällä.