Remiantis svetainės informacija, trumpas CUDA ir OpenCL skirtumų rinkinys. Atkreipkite dėmesį į klaidas.
Nukrypimas: Modeliavimo bandymas Sandia nacionalinėje laboratorijoje Jungtinėse Amerikos Valstijose įrodė, kad dėl saugojimo mechanizmo ir atminties pralaidumo apribojimų 16 branduolių, 32 branduolių ar net 64 branduolių procesoriai ne tik negali pagerinti superkompiuterių našumo, bet netgi gali žymiai sumažinti efektyvumą.
Kas yra OpenCL?
Tai atviras ir nemokamas lygiagrečiojo programavimo standartas, skirtas bendrai heterogeninių sistemų paskirčiai, kurį inicijavo "Apple" ir kartu gamina daugelis žinomų pramonės gamintojų, taip pat tai yra vieninga programavimo aplinka. Programinės įrangos kūrėjams patogu rašyti efektyvų ir lengvą kodą didelio našumo skaičiavimo serveriams, stalinių kompiuterių sistemoms ir delniniams įrenginiams, plačiai naudojamas kelių branduolių procesoriuose (CPU), grafikos procesoriuose (GPU), ląstelių tipo architektūrose ir kituose lygiagrečiuose procesoriuose, tokiuose kaip skaitmeniniai signalų procesoriai (DSP), ir turi plačias plėtros perspektyvas įvairiose srityse, tokiose kaip žaidimai, pramogos, moksliniai tyrimai ir medicinos priežiūra.
Kas yra CUDA?
CUDA yra architektūra, pagrįsta lygiagrečiu skaičiavimu Nvidia GPU. CUDA daugiausia apima du aspektus: vienas yra ISA komandų rinkinio architektūra; antrasis aparatinės įrangos skaičiavimo variklis; Tai iš tikrųjų aparatūra ir instrukcijų rinkinys. Kitaip tariant, galime galvoti apie CUDA kaip architektūrą, panašią į X86 arba ląstelę, bet pagrįstą GPU, o ne tradiciniais procesoriais.
Kas iš tikrųjų yra OpenCL?
OpenCL iš tikrųjų yra visiškai nauja API, skirta lygiagrečiam heterogeninių sistemų programavimui, o OpenCL gali naudoti GPU lygiagrečiam skaičiavimo darbui atlikti. OpenGL skirtas grafikams, o OpenCL - lygiagrečiam skaičiavimui. OpenCL kūrimo procese visos techninės platformos yra NVIDIA GPU, o iš tikrųjų OpenCL yra sukurtas remiantis NVIDIA GPU platformomis. Be to, pirmoji OpenCL demonstracinė versija taip pat veikė NVIDIA GPU. Iš esmės "OpenCL" yra technologija, lygiavertė "DirectX" "Windows" platformoje. Tiksliau, tai API sąsaja, jungianti aparatinę ir programinę įrangą. Šiuo atžvilgiu jis panašus į OpenGL, tačiau OpenCL yra daug platesnis nei OpenGL ir naudojamas ne tik 3D grafikai. Jei apibūdinsite tai vienu sakiniu, OpenCL vaidmuo yra išlaisvinti aparatinės įrangos potencialą, iškviečiant procesoriaus ir GPU skaičiavimo išteklius, kad programa veiktų greičiau ir geriau.
Kas iš tikrųjų yra CUDA?
CUDA architektūra yra vietinė, specialiai sukurta skaičiavimo sąsajoms, o ši aparatinės įrangos architektūra, įskaitant instrukcijų rinkinius, yra visas architektūrų rinkinys, skirtas tokiam lygiagrečiam skaičiavimui ir heterogeniniam skaičiavimui. CUDA architektūra gali palaikyti API, įskaitant OpenCL arba DirectX, o CUDA taip pat palaiko C, C++, Fortran, Java, Python ir kitas kalbas.
Koks ryšys tarp OpenCL ir CUDA?
CUDA ir OpenCL santykiai yra ne konfliktiniai, o įtraukūs santykiai. OpenCL yra API, pirmame lygyje CUDA architektūra yra aukštesnio lygio, nesvarbu, ar tai OpenCL, ar DX11, ar C kalba, gali būti palaikoma Fortran, DX11 kompiuterija. Kaip programų kūrėjas, paprastai jie supranta tik šias kalbas ar API ir gali naudoti kelias kalbas, kad sukurtų savo programas, nesvarbu, kokią kalbą jie pasirenka, jei nori pavadinti GPU skaičiavimo galia, jie gali naudoti CUDA programuoti pagal šią architektūrą. Techniniai skirtumai tarp OpenCL ir CUDA daugiausia atsispindi įgyvendinimo metode. CUDA, pagrįsta C kalba, yra supakuota į lengvai rašomą kodą, todėl net tyrėjai, kurie nėra susipažinę su lustų konstrukcija, gali naudoti CUDA įrankius praktinėms programoms rašyti. Nors OpenCL sintaksiškai yra artimas CUDA, jis labiau pabrėžia pagrindines operacijas, todėl yra sunkiau, tačiau dėl šios priežasties OpenCL gali veikti įvairiose platformose. CUDA yra lygiagreti skaičiavimo architektūra, kurioje yra komandų rinkinio architektūra ir atitinkamas aparatūros variklis. OpenCL yra programų programavimo sąsaja (API), skirta lygiagrečiam skaičiavimui, o OpenCL yra naujas CUDA programos kūrimo kelias, be C for CUDA NVIDIA CUDA architektūroje. Jei norite geriau valdyti aparatinę įrangą, programavimui galite naudoti OpenCL API, o jei nedaug žinote apie API, taip pat galite programuoti CUDA C, kurie yra du skirtingi programavimo būdai, kurie turi savo panašumų ir skirtumų. Tačiau yra šiek tiek, kai kuriamos OpenCL ir CUDA C kalbos, lygiagrečiai skaičiuojant, jų sąvokos yra panašios, šios dvi programos turi didelių programų panašumų, todėl gana lengva perkelti programas viena į kitą.
CUDA C kalba yra kitokia nei OpenCL, kitaip tariant, ji naudoja skirtingus žmones. CUDA C yra aukšto lygio kalba, kurią gali lengvai naudoti neprofesionalai, kurie nedaug žino apie aparatinę įrangą; OpenCL yra į aparatinę įrangą orientuota programų kūrimo sąsaja, kuri suteikia programuotojams daugiau kontrolės aparatinėje įrangoje, todėl pradėti ir kurti bus sunkiau. Programuotojų naudojimo įpročiai taip pat labai svarbūs, tie, kurie naudoja C kalbą X86 procesoriaus platformoje, lengvai priims C kalbą, pagrįstą CUDA GPU platforma; Žmonės, įpratę naudoti OpenGL grafikos kūrimą, bus draugiškesni matyti OpenCL, o jo pagrindu bus labai lengva kurti skaičiavimo programas, susijusias su grafika ir vaizdo įrašais.
|