Elkészült az OpenCL szabvány 2.0-s kiadása

Az OpenCL 2.0-s szabvány véglegesítését széleskörű együttműködés előzte meg.

Elkészült az OpenCL szabvány 2.0-s kiadása

A Khronos Group, amely egyebek mellett az OpenCL szabvány fejlesztését is végzi, néhány hónapja rántotta le a leplet az OpenCL 2.0-s szabványtervezetről, most viszont újabb bejelentésre került sor, ugyanis végre véglegessé vált az OpenCL 2.0-s szabvány.

Az OpenCL 2.0 újításainak köszönhetően egyszerűbb a keresztplatform-alkalmazások fejlesztése, illetve a párhuzamos programozás is hatékonyabbá vált. A friss szabvány minden eddiginél gazdagabb támogatással és megnövelt teljesítménnyel áll a fejlesztők rendelkezésére. Az OpenCL 2.0 végleges specifikációjának lefektetését a fejlesztőközösséggel való szoros együttműködés előzte meg, így a júliusban bejelentett szabványtervezet mára elérte végleges változatát: az OpenCL 2.0 elkészült.

Az új szabvány az alábbi újításokat kínálja:

[list type="unordered"]

[*]Shared Virtual Memory: Az adott eszköz és a rendszer kernelei közvetlenül oszthatnak meg egymással komplex adatstruktúrákat, legyen szó fákról vagy akár láncolt listákról.

[*]Nested Parallelism: Az eszközön futó kernelek rendszer-interakció nélkül hívhatnak meg új kerneleket ugyanazon az eszközön, így rugalmas feladatütemező gyakorlatok alkalmazására nyílik lehetőség, amelyeknél az eszköz és a rendszer processzora között nincs szükség végrehajtás-vezérlés és adatok továbbítására, így a processzor tehermentesíthető, ami a rendszer teljesítményére is pozitívan hat.

[*]Dynamic Parallelism: Az új OpenCL kiadás esetében az eszközön futó beágyazott kernelek anélkül tudnak új kerneleket indítani, hogy ehhez a rendszer processzorát igénybe vennék. Alap esetben eddig a rendszer processzora kellett ahhoz, hogy a GPU-n kernelek indulhassanak el, ami nem volt elég hatékony, hiszen a GPU nem dolgozhatott a saját tempójában. Ezzel a megoldással a GPU és a CPU között zajló, kernel indítással kapcsolatos kommunikáció elkerülhető, így sokkal rugalmasabb lehet az ütemezés, ami a teljesítményre is pozitívan hat.

[*]Generic Address Space: Az általános címtér funkció előnye abban rejlik, hogy a programozóknak az egyes alkalmazások esetében úgy nyílik lehetőségük különböző funkciók megírására, hogy ezzel egy időben nem szükséges megadniuk egy névleges címteret az argumentumok számára.

[*]Images: Továbbfejlesztett képkezelés, amely lehetővé teszi a kernelek számára, hogy ugyanazt a képet egyszerre írják és olvassák, de ezen kívül a mip-mappelt és multi-sampled OpenGL textúrákból is lehetőség nyílik OpenCL képek készítésére, ami javítja az OpenGL-lel való együttműködést.

[*]C11 Atomics: C11 atomi és szinkronizációs műveletek részhalmaza, amely lehetővé teszi, hogy az egyes munkafolyamatok a munkacsoportban zajló egyéb munkafolyamatok, illetve a többi munkacsoport számára is láthatóak legyenek.

[*]Pipes: Memória objektumok, amelyek az adatokat FIFO elven tárolják. Az OpenCL 2.0 ezekhez a memóriaobjektumokhoz beépített kernelfunkciókat is kínál, így egy-egy pipe tartalmát egyszerűen lehet olvasni és írni.

[*]Android Installable Client Driver Extension: Egy új bővítmény az Android alapú rendszerek számára. Az újítás lehetővé teszi az OpenCL implementációk felfedezését és megosztott objektumként való betöltését Android operációs rendszer alatt.

[/list]

Az OpenCL 2.0-s szabvány specifikációja már elérhető és az új szabványt természetesen az iparági szereplők is tárt karokkal fogadják. Rövidesen számíthatunk az OpenCL 2.0-s támogatással rendelkező driverek megjelenésére, sőt, az új szabványban rejlő lehetőségeket rövidesen több alkalmazás is kiaknázhatja majd.

Tesztek

{{ i }}
arrow_backward arrow_forward
{{ content.commentCount }}

{{ content.title }}

{{ content.lead }}
{{ content.rate }} %
{{ content.title }}
{{ totalTranslation }}
{{ orderNumber }}
{{ showMoreLabelTranslation }}
A komment írásához előbb jelentkezz be!
Még nem érkeztek hozzászólások ehhez a cikkhez!
Segíts másoknak, mond el mit gondolsz a cikkről.
{{ showMoreCountLabel }}

Kapcsolódó cikkek

Magazin címlap arrow_forward