Kuo skiriasi CUDA branduoliai ir tenzorių branduoliai? (paaiškinta) - Visi skirtumai
Turinys
CUDA ir "Tensor" branduoliai - tai bendrovės "Nvidia" sukurti produktai. Kas yra CUDA ir "Tensor" branduoliai? CUDA reiškia "Compute Unified Device Architecture". CUDA branduolių yra jūsų GPU, išmaniuosiuose telefonuose ir net automobiliuose, kaip teigia "Nvidia" kūrėjai.
CUDA branduoliai - tai lygiagrečiųjų skaičiavimų platforma ir taikomųjų programų programavimo sąsaja (API), leidžianti programinei įrangai naudoti tam tikro tipo grafikos procesorių (GPU) bendrosios paskirties apdorojimui.
Tensoriniai branduoliai, kuriuos taip pat sukūrė "Nvidia", taip pat naudojami GPU. Tensoriniai branduoliai leidžia atlikti mišraus tikslumo skaičiavimus, dinamiškai pritaikant skaičiavimus, kad būtų padidintas našumas ir išlaikytas tikslumas.
Paprastai tariant, šie branduoliai yra svarbi jūsų kompiuteryje esančių GPU dalis, skirta tam tikriems skaičiavimams atlikti. CUDA branduoliai naudojami dviem skaičiams dauginti ir pridėti prie kito skaičiaus.
Tuo tarpu "Tensor core" yra tas pats, bet su matricomis 4×4. Šie skaičiavimai iš esmės atvaizduoja grafiką greičiau už jus.
Kas yra CUDA?
2007 m. birželio 23 d. išleista bendrovės "Nvidia" sukurta CUDA (Compute Unified Device Architecture, sutrumpintai CUDA) - tai lygiagrečiųjų skaičiavimų platforma ir taikomųjų programų programavimo sąsaja (API).
Tai leidžia programinei įrangai naudoti tam tikro tipo grafikos procesorių (GPU) bendrosios paskirties duomenų apdorojimui - šis metodas vadinamas bendrosios paskirties skaičiavimais su GPU (GPU).
CUDA yra programinės įrangos sluoksnis, kuris suteikia tiesioginę prieigą prie GPU virtualaus instrukcijų rinkinio ir lygiagrečiųjų skaičiavimo elementų skaičiavimo branduolių vykdymui. CUDA buvo sukurta darbui su įvairiomis programavimo kalbomis, įskaitant C, C++ ir Fortran.
Galimybė dirbti skirtingomis programavimo kalbomis palengvina lygiagrečiojo programavimo specialistams naudotis GPU ištekliais, jei atskirsime ją nuo ankstesnių API, tokių kaip "Direct3D" ar "OpenGL", kurios reikalauja turėti pažangesnių grafinio programavimo įgūdžių.
GPU su CUDA taip pat palaiko tokias programavimo sistemas, kaip OpenMP, OpenACC, OpenCL, taip pat HIP, kurios gali tokį kodą kompiliuoti į CUDA. Pirmasis naudotas CUDA pavadinimas buvo akronimas, reiškiantis Compute Unified Device Architecture, tačiau vėliau "Nvidia" atsisakė šio plačiai naudojamo akronimo.
Galinga "Nvidia" vaizdo plokštė GTX 1080 Ti
Daugiau apie CUDA
Kaip specializuotas kompiuterio procesorius, grafikos procesorius (GPU) tenkina realiuoju laiku atliekamų daug skaičiavimų reikalaujančių 3D grafikos užduočių poreikius.
Apie 2012 m. GPU išsivystė ir tapo labai lygiagrečiomis daugiabranduolinėmis sistemomis, leidžiančiomis efektyviai apdoroti didelių blokų duomenis.
Lygiagrečiai apdorojant didžiulius duomenų blokus, ši konstrukcija yra pranašesnė už bendrosios paskirties centrinius procesorius (CPU), skirtus algoritmams, pvz:
- kriptografinės hash funkcijos
- mašininis mokymasis
- molekulinės dinamikos modeliavimas
- fizikos varikliai
- rūšiavimo algoritmai
CUDA architektūros panaudojimas dabar ir ateityje
- Spartesnis 3D grafikos atvaizdavimas
- Spartesnis vaizdo failų formatų keitimas
- Spartesnis šifravimas, iššifravimas ir suspaudimas
- Bioinformatika, pvz., NGS DNR sekos nustatymas BarraCUDA
- paskirstytieji skaičiavimai, pavyzdžiui, baltymų prigimtinės konformacijos numatymas.
- Medicininės analizės modeliavimas, pavyzdžiui, virtualioji realybė pagal kompiuterinės tomografijos ir magnetinio rezonanso tomografijos vaizdus.
- Fizikinis modeliavimas, ypač skysčių dinamikos srityje.
- Neuroninių tinklų mokymas sprendžiant mašininio mokymosi problemas
- Veido atpažinimas
- paskirstytųjų skaičiavimų projektai, pavyzdžiui, [email protected] ir kiti BOINC naudojantys projektai.
- Molekulinė dinamika
- Kriptovaliutų kasyba
- Struktūra iš judesio (SfM) programinė įranga
Kas yra tenzorių branduolys?
Specializuoti branduoliai, vadinami "Tensor Cores", leidžia atlikti mišraus tikslumo mokymą. Šių specializuotų branduolių pradinė karta tai daro naudodama sulietą dauginimo ir pridėjimo algoritmą. Tai leidžia dauginti ir pridėti dvi 4 x 4 FP16 matricas prie 4 x 4 FP16 arba FP32 matricos.
Galutinis rezultatas bus FP32 su nedideliu tikslumo praradimu, mišraus tikslumo skaičiavimai taip ir vadinami, nors įvesties matricos gali būti mažo tikslumo FP16.
Praktiškai tai gerokai pagreitina skaičiavimus, o galutiniam modelio efektyvumui tai turi mažai įtakos. Vėlesnės mikroarchitektūros šią galimybę išplėtė iki dar mažiau tikslių kompiuterio skaičių atvaizdavimų.
Pirmoji karta buvo pristatyta su "Volta" mikroarchitektūra, pradedant nuo V100, o su kiekviena nauja GPU mikroarchitektūra skaičiavimams buvo suteikiama daugiau kompiuterio skaičiaus tikslumo formatų.
Apie tai, kaip keitėsi ir tobulėjo "Tensor Cores" branduolių talpa ir funkcionalumas su kiekviena mikroarchitektūros karta, kalbėsime tolesniame skyriuje.
Grafinis vaizdas, sukurtas "Titan V
Kaip veikia tenzorių branduoliai?
Pirmoji karta:
Kartu su pirmosios kartos "Tensor Cores" branduoliais buvo įdiegta "Volta" GPU mikroarchitektūra. Šie branduoliai suteikė galimybę mokyti naudojant mišrų tikslumą ir FP16 skaičių formatą.
Dėl to tam tikrų GPU teraFLOP našumas gali padidėti iki 12 kartų. 640 aukščiausios klasės V100 branduolių suteikia iki 5 kartų didesnį našumą, palyginti su ankstesnės kartos "Pascal" GPU.
Antroji karta:
Įdiegus "Turing GPU", buvo pristatyta antroji "Tensor Core" karta. Į palaikomų "Tensor Core" tikslumų sąrašą buvo įtraukti Int8, Int4 ir Int1, kurie anksčiau buvo tik FP16.
Dėl mišraus tikslumo mokymo procedūrų GPU našumas padidėjo iki 32 kartų, palyginti su "Pascal" GPU.
Trečioji karta:
"Ampere" GPU architektūra išplečia ankstesnius "Volta" ir "Turing" mikroarchitektūrų pasiekimus, pridėdama FP64, TF32 ir bfloat16 tikslumo palaikymą.
Giluminio mokymosi mokymo ir išvadų darymo veiklą šie papildomo tikslumo formatai pagreitina daug labiau. Pavyzdžiui, TF32 formatas veikia panašiai kaip FP32, tačiau taip pat garantuoja iki 20 kartų didesnį greitį nekeičiant jokio kodo.
Tuomet vos keliomis kodo eilutėmis automatinis mišraus tikslumo diegimas pagreitins mokymą dar 2 kartus.
Taip pat žr: Pokémon White vs. Pokémon Black? (paaiškinta) - visi skirtumaiTrečiosios kartos "NVLink", leidžianti itin sparčiai sąveikauti su keliais GPU, trečiosios kartos "Ray Tracing" branduoliai ir retų matricų matematikos specializacija - papildomi "Ampere" mikroarchitektūros aspektai. .
Ketvirtoji karta:
Ateityje planuojama išleisti "Hopper" mikroarchitektūra pagrįstą ketvirtosios kartos "Tensor Cores" branduolių versiją. Ketvirtosios kartos "Tensor Cores" branduoliai kitame H100.
kuris turėtų būti išleistas 2022 m. kovo mėn., galės apdoroti FP8 tikslumo formatus ir, pasak NVIDIA, paspartins didžiulių kalbų modelius "stulbinamai 30 kartų, palyginti su ankstesne karta".
RTX vaizdo plokštė naudojama labai sparčiai atvaizduoti grafiką, nes joje yra tensorių branduolių.
CUDA branduolių ir tenzorių branduolių skirtumas
Šiuo metu "Tensor" branduoliai yra tik "Titan V" ir "Tesla V100". 5120 CUDA branduolių abiejuose GPU gali atlikti ne daugiau kaip vieną vienos tikslumo daugybos ir kaupimo operaciją (pvz., fp32: x += y * z) per vieną GPU taktą (pvz., "Tesla V100" PCIe dažnis yra 1,38Gz).
Kiekvienas tenzorių branduolys veikia su mažomis 4×4 mažomis matricomis. Per vieną GPU taktą kiekvienas tenzorių branduolys gali atlikti vieną matricų dauginimo-akumuliavimo operaciją.
Jis padaugina dvi 4×4 FP16 matricas ir prideda 4×4 FP32 matricą, kuri gaunama akumuliatoriuje (kuris taip pat yra fp32 4×4 matrica).
Taip pat žr: Kuo skiriasi ROI ir ROIC? (Paaiškinta) - visi skirtumaiKadangi įvesties matricos yra fp16, o daugybos rezultatai ir kaupiklis - fp32, šis algoritmas vadinamas mišraus tikslumo.
Teisingas terminas greičiausiai būtų "4×4 matricos branduoliai", tačiau NVIDIA rinkodaros komanda pasirinko "tensorių branduolius".
Tensorių branduolių išsamus paaiškinimas trumpai
GPU plokštė | CUDA branduoliai | VRAM |
---|---|---|
"GeForce GTX 1660 Ti | 1536 | 6GB |
"GeForce GTX 1660 Super | 1408 | 6GB |
"GeForce GTX 1660 | 1408 | 6GB |
"GeForce GTX 1650 Super | 1408 | 4 GB |
"GeForce GTX 1650 | 1024 ir 896 | 4 GB |
"GeForce GTX 1060 3GB | 1280 | 4 GB |
"GeForce GTX 1650 | 1280 | 3GB |
"GeForce GTX 1060 6GB | 768 | 6GB |
"GeForce GTX 1050 Ti" (3 GB) | 768 | 4 GB |
"GeForce GTX 1050" (2GB) | 640 | 3GB |
"GeForce GTX 960 | 1024 | 2 GB |
"GeForce GTX 950 | 786 | 2 GB |
"GeForce GTX 780 Ti | 2880 | 2 GB |
"GeForce GTX 780 | 2304 | 3GB |
"GeForce GTX 750 Ti | 640 | 2 GB |
"GeForce GTX 750 | 512 | 1 GB arba 2 GB |
GPU, kuriuose yra CUDA branduolių
Išvada
- CUDA ir "Tensor" branduoliai yra produktai, kuriuos sukūrė bendrovė "Nvidia". CUDA reiškia "Compute Unified Device Architecture". Šie CUDA branduoliai yra jūsų GPU, išmaniuosiuose telefonuose ir net automobiliuose.
- Tuo tarpu tensoriniai branduoliai, kuriuos taip pat sukūrė "Nvidia", taip pat naudojami GPU. Specializuoti branduoliai, vadinami "Tensor cores", leidžia mokyti mišriu tikslumu. Pirmoji "Tensor cores" branduolių karta leido mokyti mišriu tikslumu ir FP16 skaičių formatu.
- Dėl to tam tikruose GPU teraFLOP našumas gali padidėti iki 12 kartų. Į palaikomų "Tensor Core" tikslumų sąrašą įtrauktos Int8, Int4 ir Int1.
- Dėl mišraus tikslumo mokymo procedūrų GPU našumas padidėjo iki 32 kartų. Ateityje planuojama išleisti "Hopper" mikroarchitektūra pagrįstą ketvirtosios kartos "Tensor Cores" branduolių versiją.