iPon Hírek

Bemutatkozik az OpenCL 2.1

Dátum | 2015. 03. 03.
Szerző | J.o.k.e.r
Csoport | SZOFTVER

A Khronos Group gőzerővel fejleszti az OpenCL API-t, ami most, a legújabb verzió bejelentésével még vonzóbbá vált. Az OpenCL 2.1-es API egyelőre csak ideiglenes specifikációval rendelkezik, de remélhetőleg rövid időn belül elkészül a végleges is.
Az OpenCL 2.1-es kiadása óriási mérföldkő: egyesíti a számítási feladatokra használatos OpenCL API-t a grafikára használható OpenGL (glNext/Vulkan) API-val, amelyek a SPIR-V formájában kerülnek egy tető alá. Ennek köszönhetően a fejlesztők a SPIR segítségével számítási és grafikai kódokat egyaránt írhatnak, így egységes nyelvi környezet alakul ki, ami lehetővé teszi a Vulkan és az OpenCL esetében, hogy ugyanazokat a magas szintű programozási nyelveket támogassák, így a környezet még ütőképesebb lehet. Ennél talán egy fokkal fontosabb, hogy az OpenCL sok évnyi előkészítés után most végre megkapta a C++ programozási nyelv támogatását, amire már 2008-ban, az OpenCL C bemutatásakor is hatalmas igény volt, ám a hardveres és szoftveres környezetnek sokat kellett fejlődnie, hogy a C++ támogatás valóban bevezethető legyen. Ugyan a C++ programnyelv nem újdonság a GPU alapú számítási feladatok terén – az Nvidia saját CUDA eljárása is használja egy ideje –, a platformok között működő OpenCL esetében még csak manapság válik elérhetővé.
Persze az OpenCL 2.1 jellegéből adódóan nem teljes C++ támogatásról beszélünk, ugyanis a fejlesztők kivettek a repertoárból néhány olyan szolgáltatást, amelyek nem igazán hasznosíthatóak párhuzamos számítási feladatok alkalmával (Pl catch/throw, virtuális függvények, függvénymutatók). A többi összetevő természetesen elérhető maradt, így az osztályok, a sablonok és a lambda-függvények használatára egyaránt van mód. Ezzel az OpenCL olyan előnyökre tesz szert, amelyekre általánosságban a C->C++ váltásnál is számíthatunk, ezáltal a fejlesztők olyan magas szintű programnyelvhez jutnak, ami sokkal ütőképesebb és összességében szélesebb körben is ismert.
Az OpenCL C persze továbbra is elérhető marad, részben kompatibilitási okok miatt, és ez a jövőben sem változik. Az OpenCL 2.1 érkezésével a CUDA és az OpenCL közötti szakadék továbbra sem tűnik el, ám az újítások hatására lényegesen szűkül. Kérdés viszont, hogy az Nvidia idővel bevezeti-e az OpenCL 2.1 támogatást, hiszen még az OpenCL 2.0 implementálása sem történt meg. Mivel az Nvidia CUDA eljárása egy domináns technológia, így nem meglepő, hogy a cég nem siet az OpenCL 2.0 implementálásával – ez persze erősen behatárolja, pontosan mennyi olyan videokártya áll rendelkezésre, amelyeknél megoldott az OpenCL legfrissebb kiadásának támogatása.
Az OpenCL 2.1 esetében az OpenCL C++ támogatás bevezetése mellett egyéb extra szolgáltatások is érkeztek, amelyek javítják az API rugalmasságát. Ilyenek az alacsony késleltetésű eszközidőzítők, valamint a kernel klónozó szolgáltatás is. Az OpenCL 2.1-es szabvány egyelőre még csak ideiglenes változatban érhető el, véglegesítésére majd csak később kerülhet sor. Tekintve, hogy még csak március van, jó esély mutatkozik rá, hogy a végleges OpenCL 2.1-es specifikáció még idén elkészüljön.
Új hozzászólás írásához előbb jelentkezz be!