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.