CUDA konputazio paralelorako plataforma bat da. izena Compute Unified Device Architecture kontzeptuaren akronimoa da (Konputatzeko Gailuen Arkitektura Batua). Plataformak nVidia-k sortutako konpiladore bat eta garapenerako tresna multzo bat dauzka. Algoritmoak nVidia-ren GPUan kodetzeko aukera ematen die programatzaileei C programazio-lengoaiaren aldaera bat erabiliz.
Wrapper gehigarrien bidez Python, Fortran eta Java ere erabili ahal dira C/C++ lengoaiaren ordez.
nVidiaren GPU guztiekin dabil G8X serietik aurrera: GeForce, Quadro, ION eta Tesla lerroa barne.[1]
GPUak helburu orokorreko PUZarekiko dituen abantailak ustiatzen saiatzen da CUDA, bere nukleo anitzek eskaintzen duten paralelismoarekin, konputazio-hari kopuru handia aldi berean abiatzeko aukera ematen duena. Beraz, aplikazio bat diseinatu bada independente diren hainbat hari erabiliz (GPUek grafikoak prozesatzerakoan egiten dutena), GPUa gai izango da errendimendu handia eskaintzeko; Biologia konputazionalean, edo kriptografian, adibidez.
Lehen SDK 2007ko otsailaren hasieran kaleratu zen, Windows eta Linux-erako, eta geroago, 2.0 bertsioan Mac OS-erako ere bai.
CUDA freewarea da, doanik deskargatu eta erabil daiteke, baina ez da software libre, kodea ez da irekia.
Adibidea: prozesamenduaren fluxua CUDArekin 1. Datuak kopiatu memoria nagusitik GPUko memoriara 2. CPUak prozesua eskatzen dio GPUri 3. GPUak paraleloan exekutatzen ditu core bakoitzean 4. Emaitza kopiatu GPUko memoriatik memoria nagusira
Abantailak
CUDAk zenbait abantaila ditu, GPUak API grafikoekin erabiltzen dituzten beste aplikazio batzuekin konparatuta:
Irakurketa sakabanatuak: memoriako edozein posizio kontsulta daiteke.
Partekatutako memoria: CUDAk programatzaileari 16KB-ko memoria-eremu bat (edo 48KB Fermi seriean) jartzen dio eskuragarri, hari guztien artean partekatuko dena. Tamaina eta abiadura kontuan hartuta, cache moduan erabili daiteke.
Irakurketak azkarragoak dira GPUtik eta GPUra.
Laguntza osokoak eta bit-maila eragileak erabiltzeko.
Mugak
Ezin dituzu erabili hauek: errekurtsibitatea, funtzio-erakusleak, aldagai estatikoak funtzio barruan edo parametro kopuru aldagarria duten funtzioetan.
Testura-errenderizazioa ez da onartzen.
Doitasun sinplean ez du onartzen zenbaki de-normalizaturik, edo NaN-ak
Botila-lepo bat sortu daiteke CPU eta GPU artean busen banda-zabalera eta latentziengatik.
Hari edo exekuzio-hariak, eraginkortasun-arrazoiengatik, taldeka jarri behar dira abian, gutxienez 32ko taldetan.