Specializuotų procesorių pranašumas ypač išryškėja tada, kai juos galima pritaikyti tinkamoje vietoje. Tai akivaizdžiai patvirtina šiuolaikiniai trimatės grafikos spartintuvai. Tuos pačius vaizdus pavedus generuoti kompiuterio procesoriui, darbo sparta sumažėtų šimtus kartų. Deja, specializuoto procesoriaus privalumas tuo pačiu yra ir didžiausias jo trūkumas: šie procesoriai geba atlikti tik tam tikrus skaičiavimus.
Vaizdo plokštės baltymus „lanksto“ dešimtis kartų sparčiau
Stenfordo universitete buvo pradėtas vienas iš kelių garsių paskirstytųjų skaičiavimų projektų – „Folding@HOME“. Tūkstančių savanorių kompiuteriai atlieka baltymų molekulių sąveikos skaičiavimus, kurie turėtų padėti išgydyti daugelį ligų.
Spalio mėnesį „Folding@HOME“ pradėjo grafinių procesorių bandymus. Rezultatai – stulbinami: iš suminės 220 TFLOPS (trilijonai slankiojo kablelio operacijų per sekundę) spartos grafiniams procesoriams (GPU) tenka 33 TFLOPS (15 proc.). Tačiau 188 303 procesorių tinkle grafinių yra tik 555 (0,294 proc.)! (Tai – aktyvių procesorių skaičius, svetainėje jis keičiasi kas valandą.)
Pristatydama naująją „Radeon X1x00“ procesorių kartą, ATI prabilo apie grafinių procesorių naudojimą negrafiniams skaičiavimams. „Folding@HOME“ akivaizdžiai atskleidė tokią galimybę.
ATI pati lyg ir nesirengia kurti srautinių skaičiavimų (stream processing) priemonių – tai palikta kitoms kompanijoms, tokioms kaip „Peak Stream“ (www.peakstreaminc. com), pateikiančioms aukšto lygio programavimo kalbų bibliotekas. Jas nesunku pritaikyti programose.
Programuotojui visiškai nesvarbu, ar programą vykdys ATI, ar NVIDIA grafinis procesorius, ar „PlayStation 3“. Tiesa, iki pasirodant „GeForce 8x00“ procesorių šeimai, „NVidia“ kukliai tylėjo, nes 7x00 šeimos GPU srautiniams skaičiavimams buvo sudėtingiau pritaikyti ir jie veikė keliskart lėčiau. Tačiau pasirodžius 8x00 procesoriams turėtume dažniau išvysti ir „NVidia“ vardą.
Kaip tai veikia?
Grafiniai procesoriai tapo programuojami, todėl juos galima naudoti ne tik grafiniams duomenims apdoroti. Siekiant sukurti tikroviškesnius efektus, į GPU konvejerį buvo įtraukti programuojami šešėliavimo konvejeriai, kuriais skaičiuojami objekto viršūnių parametrai: spalva, vieta, tekstūros koordinatės ir normalės vektorius.
Dabartiniai GPU geba apdoroti 32 bitų ilgio duomenis, kurių reikia didelio dinaminio kontrasto (HDR – High Dynamic Range) vaizdams generuoti.
Grafiniai objektai dažniausiai aprašomi vektoriais (2, 3, 4 matmenų), tad ir GPU yra labiau pritaikyti tokiems duomenims apdoroti. Pavyzdžiui, vienos spalvos (R1, G1, B1) įtaką kitai (R2, G2, B2) GPU gali įvertinti atlikęs vieną operaciją iškart su visomis spalvos komponentėmis <R1*R2, G1*G2, B1*B2>. Vienos instrukcijos daugelio duomenų (SIMD – Single Instruction Multiple Data) funkcijos jau įdiegtos ir į įprastus procesorius.
GPU privalumai išryškėja tada, kai tokiu pat būdu tenka apdoroti daug vieno tipo duomenų (srautą). GPU – srautiniai procesoriai, galintys vieną funkcijų branduolį (kernel) naudoti daugeliui srauto įrašų vienu metu. Visi srauto elementai apdorojami nepriklausomai vienas nuo kito, todėl norint pasiekti didžiausią spartą duomenys turi būti nepriklausomi.
Taikymas
GPU skaičiavimo pajėgumai gali būti taikomi įvairiose srityse, kuriose tenka apdoroti nesusijusius skaičių masyvus: signalus, garsus ar vaizdus, statistikos, fizikos duomenis.
Žinoma, vaizdo plokščių gamintojai nepamiršo ir pramogų. „Havok FX“ – naujas žaidimų fizikinių skaičiavimų posistemis, leidžiantis modeliuoti daugelio objektų susidūrimų pasekmes. Tiesa, tai ne vienintelis fizikinių skaičiavimų projektas – jau platinamas ir „Ageia PhysX“ fizikinių skaičiavimų spartintuvas.
Džiugu, kad didžiausi grafinių lustų gamintojai susitarė tarpusavyje ir pasirinko vieną posistemį, kurio funkcijos bus įtrauktos ir į „DirectX 10“ funkcijų rinkinį. Kiek vyresni kompiuterinių žaidimų mėgėjai tikriausiai prisimena „Glide“, „RRedline“, „OpenGL“, „Direct3D“, „PowerVR“ trimatės grafikos bibliotekų peštynes.
Nuorodos
- GPGPU (www.gpgpu.org) – bendrosios paskirties skaičiavimų, pasitelkus grafinius procesorius, svetainė. Pateikiamos nuorodos į funkcijų bibliotekas.
- http://gamma.cs.unc.edu/GPUSORT/ – masyvų rikiavimo funkcijos, naudojant grafinį procesorių.
- http://libsh.org/ – bendrosios paskirties skaičiavimų spartinimo biblioteka, pritaikyta „GeForce FX 5200“, „Radeon 9600“ ir naujesniems GPU.
- http://graphics.stanford.edu/projects/brookgpu/ – srautinių lygiagrečiųjų skaičiavimų sistema „BrookGPU“.