Hirdetés

Véglegesek az OpenCL 2.0 specifikációi

Az OpenCL 2.0-ról először az idei SIGGRAPH alkalmával lebbent fel a fátyol, mely akkor még csak tervezet volt, mivel a Khronos Group késett a felület elfogadtatásával. Persze ez nem akkora gond, mivel egyelőre olyan hardverek sem érhetők el, amelyek üzemképesek lennének az új funkciókkal. A fejlesztők azonban nem pihentek, így véglegesítették az OpenCL 2.0 specifikációit, így már csak a hardverekre kell várni, de a fejlesztők már most tanulmányozhatják a rendszert.

Az új felület legfontosabb újítása, hogy egységesen támogatja a központi processzorok és az integrált grafikus vezérlő között megosztott virtuális memóriát, így az előbbi két részegység teljesen mellőzheti a memóriamásolásokat, illetve ezek eliminálásával hatékonyabb algoritmusok hozhatók létre és a heterogén módon programozható hardverek használata is egyszerűbb lesz. Sajnos erre a funkcióra ma még nincs hardver a piacon, de a következő év elején már lesz, ugyanis az AMD Kaveri APU-ja képes támogatni ezt az újítást. Később érkező hardvereket figyelembe véve az NVIDIA Parker kódnevű rendszerchipje is megfelel, de többi cég tervei egyelőre homályosak.

Szintén nagyon lényeges extra a Nested Parallelism technika, amit korábban dinamikus parallelizmus néven lehetett ismerni. Azt nem tudjuk, hogy a névváltást mi indokolta, de maga a funkció semmit sem változott, és végtére is ez a lényeg. Az újítás a GPU kihasználtságát képes növelni azzal, hogy eliminálja a központi és grafikus processzor közötti kommunikációt. Korábban a processzor több szituációban is korlátozta a GPU-t, mivel minden kernelt a processzor indított a grafikus vezérlőn. Az új funkció lehetőséget ad arra, hogy a program a beágyazott kernelekkel képes legyen tovább dolgozni anélkül, hogy a processzor segítségét venné igénybe. Tulajdonképpen bármelyik kernel képes egy új kernelt indítani anélkül, hogy processzor beavatkozására lenne szükség. Ehhez sem lesz mindegyik hardver jó, de az NVIDIA termékpalettájáról a GK110 és a GK208 esetében oldható meg a támogatás, míg az AMD megoldásai közül a Hawaii kódnevű cGPU, illetve a Kabini és a Temash SoC APU-k felelnek meg, de a Kaveri és a később érkező többi APU-n is működik majd a funkció.

Újítás még az általános címtér megjelenése, ami a programozók dolgát könnyíti majd meg. Segítségével nem szükséges minden egyes névleges címtérhez külön funkciókat írni, ami egyszerűsíti a programozást. Szintén lényeges extra, hogy a bevezetésre került a C11 atomi és szinkronizációs operációk egy része, aminek hála egy munkaegység feladatai láthatóvá válnak más munkaegységek számára egy munkacsoportban, illetve a többi munkacsoportban, valamint az eszközön belül. Mindemellett az OpenCL alapvető javításokon is átesett a képobjektumokra vonatkozóan, továbbá megjelenik a pipes memóriaobjektum, ami az adatokat FIFO elv szerint raktározza. Ezek a funkciók elvileg a mai OpenCL 1.2-t támogató hardverekkel is kihasználhatók.

Általános javítása az OpenCL 2.0-nak, hogy továbbfejlődött a végrehajtási, ami természetesen kiegészül C11 és C++11 a memóriamodelljének részhalmazával, így a fejlesztők hatékonyabban gyorsíthatják a programjaikat a grafikus vezérlők erejét kihasználva.

A Khronos Group a fentiek mellett az Androidra is gondolt. A Google ugyan nem szívleli az ötletet, de az ARM-os gyártók számára fontos az OpenCL. Ennek megfelelően lesz egy telepíthető kliens meghajtó, ami lehetővé teszi, hogy a programok megosztott objektumként betöltsék és kihasználják a gyártók OpenCL implementációit. Persze a Google Play áruházba így sem kerülhet fel OpenCL-t használó alkalmazás, de legalább van mód rá, hogy az új generációs tabletek valamilyen formában kihasználják a GPGPU-s felületet.

Azóta történt

Előzmények

Hirdetés