Cuda

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
 Broom icon.svg  Šį puslapį ar jo dalį reikia sutvarkyti pagal Vikipedijos standartus.
Jei galite, sutvarkykite; apie sutvarkymą galite pranešti specialiame Vikipedijos projekte.

CUDA - NVIDIA sukurta nauja duomenų apdorojimo architektūra išnaudojanti grafinio procesoriaus resursus

Grafikos procesorius kaip duomenų apdorojimo įrenginys

Per paskutinius kelerius metus grafikos procesoriai (GPU) smarkiai patobulėjo ir tapo galingais skaičiavimo įrenginiais (1. pav). Su keliais branduoliais ir labai dideliu atminties pralaidumu šiandien grafikos procesoriai turi neįtikėtiną galią tiek grafiniuose tiek negrafiniuose skaičiavimuose.

1. pav CPU ir GPU slankaus kablelio operacijos per sekundę.

Pagrindinė GPU evoliucijos priežastis yra ta, jog jis yra specializuotas grafikos apdorojimui, kas reikalauja labai intensyvių, lygiagrečių skaičiavimų, todėl yra suprojektuotas taip, kad daugiau tranzistorių yra skirta duomenų apdorojimui negu spartinančiai atminčiai ir srautų valdymui, kaip pavaizduotas 2 pav.

2. pav GPU daugiau tranzistorių skirta duomenų apdorojimui

Tiksliau kalbant, GPU ypač tinka lygiagretiems skaičiavimams – ta pati programa yra suskaidoma į daug duomenų elementų ir vykdoma lygiagrečiai, tokiu būdu pasiekiamas didelis skaičiavimų našumas, paprastesnis srautų valdymas. Daugelyje programų, apdoroti didelius duomenų rinkinius, pavyzdžiui, masyvus, galima naudoti lygiagretų duomenų apdorojimo programavimo modelį, siekiant paspartinti skaičiavimus. Trimatės grafikos vaizdavime dideli duomenų rinkiniai yra susiejami su lygiagrečiomis gijomis. Panašiai vaizdo kodavimo ir dekodavimo, vaizdo mastelio keitimo, stereo vaizdo ir kitose programose galima naudoti lygiagretų duomenų apdorojimą. Iš tiesų, daugelis algoritmų, nebūtinai susijusių su grafikos apdorojimu, gali būti paspartinti naudojant lygiagretų duomenų apdorojimą. Iki šiol priėjimas prie grafikos procesoriaus skaičiavimo resursų, ne grafikos apdorojimo tikslams, buvo keblus. GPU buvo galima programuoti tik per grafikos API (Aplikacijų programavimo sąsaja), kas lėmė sudėtingą programavimo įsisavinimą pradedantiesiems ir netinkamus API įrankius ne grafikos programų kūrimui. GPU programos galėjo duomenis paimti iš bet kurios DRAM atminties vietos, bet negalėjo įrašyti į bet kurią vietą. Tai labai sumažino programavimo lankstumą. Kai kurios programos buvo stabdomos DRAM atminties mažo pralaidumo, dėl to nepakankamai išnaudodavo GPU skaičiavimo galią.

CUDA - Nauja duomenų apdorojimo architektūra išnaudojanti grafinio procesoriaus resursus

CUDA (Compute Unified Device Architecture) – bendrosios paskirties lygiagrečiųjų skaičiavimų architektūra, kuri panaudoja Nvidia GPU skaičiavimams su slankaus kablelio skaičiais. Palaikoma įranga GeForce 8 serija, Quadro FX 5600/4600, ir Tesla sprendimai. Operacinės sistemos daugiaprogramio apdorojimo (multitasking) sistema yra atsakinga už prieigą prie GPU kelių CUDA ir grafikos programų vienu metu. CUDA programinė įranga yra sudaryta iš kelių sluoksnių, kaip pavaizduota 3 pav. : aparatinės įrangos tvarkyklės, aplikacijų programavimo sąsajos (API) ir dviejų, bendros paskirties, aukšto lygio matematinių bibliotekų „CUFFT“ ir „CUBLAS“

3 pav. bendrosios paskirties lygiagrečiųjų skaičiavimų architektūros programinės įrangos architektūra

Cuda pateikia bendrą DRAM atminties adresavimą, kaip pavaizduota 4 pav., didesniam programavimo lankstumui pasiekti. Žiūrint iš programavimo pusės tai reiškia galimybę skaityti ir rašyti į bet kuria atminties vieta taip kaip dirbant su CPU.

4 pav. atminties adresavimas

CUDA vienas iš pranašumų tai lygiagrečių gijų spartinančioji atmintis arba „On-Chip„ bendra (shared) atmintis su labai didelių skaitymo bei rašymo greičiu, kurią gijos naudoja duomenims tarpusavyje keistis. Kaip pavaizduota 5 pav. vykdomos programos lygiagrečiai, įgauna pranašumą, sumažindamos duomenų apsikeitimo su DRAM laiką, taip sumažindamos priklausomumą nuo DRAM pralaidumo.

5 pav. Bendra atmintis pagreitina duomenų apsikeitimą tarp ALU