See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 12624|Vastuse: 0

CUDA erineb OpenCL-ist

[Kopeeri link]
Postitatud 22.04.2018 21:42:36 | | | |
Veebilehe info kohaselt on lühike kokkuvõte CUDA ja OpenCL erinevustest. Palun osutage võimalikele veadele.

Kõrvalepõige: Sandia Riiklikus Laboris Ameerika Ühendriikides tehtud simulatsioonitest tõestas, et salvestusmehhanismide ja mäluribalaiuse piirangute tõttu ei suuda 16-tuumalised, 32- või isegi 64-tuumalised protsessorid mitte ainult superarvutitele jõudluse paranemist tuua, vaid võivad isegi viia märkimisväärse efektiivsuse languseni.

Mis on OpenCL?

See on avatud ja vaba standard paralleelprogrammeerimiseks heterogeensete süsteemide üldiseks otstarbeks, mille algatas Apple ja mida on ühiselt tootnud paljud tuntud tootjad tööstuses, ning see on ühtne programmeerimiskeskkond. Tarkvaraarendajatele on mugav kirjutada tõhusat ja kerget koodi kõrge jõudlusega arvutiserveritele, lauaarvutitele ja käsiseadmetele ning seda kasutatakse laialdaselt mitmetuumalistes protsessorites (CPU-d), graafikaprotsessorites (GPU-d), rakkutüüpi arhitektuurides ja teistes paralleelprotsessorites, nagu digitaalsed signaaliprotsessorid (DSP-d), ning sellel on laiad arenguväljavaated erinevates valdkondades nagu mängud, meelelahutus, teadusuuringud ja meditsiiniline hooldus.

Mis on CUDA?

CUDA on arhitektuur, mis põhineb paralleelarvutusel Nvidia GPU-del. CUDA hõlmab peamiselt kahte aspekti: üks on ISA käsustiku arhitektuur; teine riistvaraarvutusmootor; Tegelikult on see riistvara ja käsukomplekt. Teisisõnu, võime mõelda CUDA-le kui arhitektuurile, mis sarnaneb X86-le või cellile, kuid põhineb GPU-del, mitte traditsioonilistel protsessoritel.




Mis on OpenCL tegelikult?

OpenCL on tegelikult täiesti uus API heterogeensete süsteemide paralleelprogrammeerimiseks ning OpenCL saab kasutada GPU-sid mõningase paralleelarvutustöö tegemiseks.
OpenGL on mõeldud graafidele, OpenCL aga paralleelarvutustele.
OpenCL arendusprotsessis on tehnilised platvormid kõik NVIDIA GPU-d ning tegelikult on OpenCL arendatud NVIDIA GPU platvormide põhjal. Lisaks töötas OpenCL esimene demo ka NVIDIA GPU-del.
Põhimõtteliselt on OpenCL tehnoloogia, mis vastab Windowsi platvormile DirectX-ile. Või õigemini, see on API liides, mis ühendab riistvara ja tarkvara. Selles mõttes on see sarnane OpenGL-ile, kuid OpenCL on palju ulatuslikum kui OpenGL ning seda ei kasutata ainult 3D-graafika jaoks. Kui seda ühe lausega kirjeldada, siis OpenCL-i roll on vabastada riistvara potentsiaal, kutsudes protsessori ja GPU arvutusressursse, et programm töötaks kiiremini ja paremini.
Mis on CUDA tegelikult?

CUDA arhitektuur on natiivne, spetsiaalselt loodud arvutusliideste jaoks, ning see riistvaraarhitektuur, sealhulgas käsustikud, on täielik arhitektuuride komplekt, mis on loodud sellise paralleelarvutuse ja heterogeense arvutuse jaoks. CUDA arhitektuur toetab API-sid, sealhulgas OpenCL või DirectX, ning CUDA toetab ka C, C++, Fortran, Java, Python ja teisi keeli.



Milline on OpenCL-i ja CUDA suhe?

CUDA ja OpenCL-i suhe ei ole konfliktipõhine, vaid kaasav suhe. OpenCL on API, esimesel tasemel on CUDA arhitektuur kõrgem tase, olgu see OpenCL, DX11 või C keel, Fortran, DX11 arvutust saab toetada. Programmi arendajana mõistab ta tavaliselt ainult neid keeli või API-sid ning saab kasutada mitut keelt oma programmide arendamiseks, sõltumata sellest, millise keele nad valivad, kui nad soovivad kasutada GPU arvutusvõimsust, saavad nad CUDA abil sellel arhitektuuril programmeerida.
Tehnilised erinevused OpenCL-i ja CUDA vahel kajastuvad peamiselt rakendusmeetodis. C-keelel põhinev CUDA on pakendatud lihtsasti kirjutatavasse koodi, nii et isegi kiibiehitusega tuttamata teadlased võivad kasutada CUDA tööriistu praktiliste programmide kirjutamiseks. Kuigi OpenCL on süntaktiliselt CUDA-le lähedane, rõhutab see rohkem aluseks olevaid operatsioone, mistõttu on see keerulisem, kuid seetõttu saab OpenCL töötada platvormide vahel.
CUDA on paralleelarvutusarhitektuur, mis sisaldab käsustiku arhitektuuri ja vastavat riistvaramootorit. OpenCL on rakendusliides (API) paralleelarvutuse jaoks ning OpenCL on uus CUDA programmi arendustee lisaks C for CUDA-le NVIDIA CUDA arhitektuuril.
Kui tahad riistvara üle rohkem kontrolli saada, võid programmeerida OpenCL API-ga, ja kui sa API-st palju ei tea, võid programmeerida ka CUDA C-s, mis on kaks erinevat programmeerimisviisi ja neil on omad sarnasused ja erinevused. Aga kui OpenCL ja CUDA C keeled arenevad, on paralleelarvutuses nende kontseptsioonid sarnased, neil kahel programmil on suured sarnasused, mistõttu on suhteliselt lihtne programme üksteisele portida.


CUDA C keel on paigutatud erinevalt OpenCL-ist ehk teisisõnu kasutab see erinevaid inimesi. CUDA C on kõrgetasemeline keel, mida saavad hõlpsasti kasutada ka mitteprofessionaalid, kes riistvarast palju ei tea; OpenCL on riistvarapõhine rakenduste arendusliides, mis annab programmeerijatele rohkem kontrolli riistvara üle ning alustamine ja arendamine on keerulisem.
Programmeerijate kasutusharjumused on samuti väga olulised, need, kes kasutavad C-keelt X86 protsessori platvormil, aktsepteerivad hõlpsasti C keelt, mis põhineb CUDA GPU platvormil; Inimesed, kes on harjunud OpenGL graafikaarendusega, on OpenCL-i suhtes sõbralikumad ning graafika ja videoga seotud arvutusprogramme on selle põhjal väga lihtne arendada.






Eelmine:HttpRuntime vahemälu lugemised seadi vahemälu info kapseldamine
Järgmine:Miks mitte anda MB set-avataridele
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com