Végleges az OpenCL 2.1 és a SPIR-V 1.0 specifikációja

A Khronos Group a jelenleg is zajló SC15 rendezvényen bejelentette a régóta várt OpenCL 2.1 és a SPIR-V 1.0 végleges specifikációját.

Az OpenCL 2.1 alapjaiban az OpenCL 2.0-ra épül, ám számos nagyon hasznos kiegészítést tartalmaz, amelyek egyszerűbb programfejlesztést tesznek lehetővé. A legnagyobb újítás egyértelműen az OpenCL C++ bevezetése, amely az aktuális OpenCL C nyelvet egészíti ki. Ennek értelmében az utóbbi nyelv továbbra is elérhető marad, ami lényegesnek tekinthető a meglévő kódok futtatása miatt, de az esetek többségében OpenCL C++ mostantól jobb alternatíva. Utóbbi a C++14 részhalmazára épül, aminek hála a programozók mostantól mellőzhetik a viszonylag alacsony szintű kódolást, miközben a teljesítmény szempontjából nem jelentkezik hátrány. A Khronos Group a párhuzamosításhoz nem ideális C++14 funkciókat kivágta, de megmaradtak például az osztályok, a lambda függvények, illetve a template-ek.

Az OpenCL 2.1-hez kapcsolódó újítás a SPIR-V, amelynek szintén végeleges az 1.0-s verziója. A SPIR-V teljesen leváltja a korábbi SPIR-t, mivel az újratervezett alapok jobban szolgálják az efféle közbülső fordítási egységeket, amely reprezentálja a programot a forráskód és a lefordított bináris között.

A SPIR-V legnagyobb előnye a korábbi SPIR verziókhoz képest, hogy nem az LLVM-re épít. Bár a Khronos Group szerint az LLVM egy rendkívül hasznos fordítóprogram-infrastruktúra, de nem szabványosított, és az egyes verziók nem kompatibilisek egymással, valamint nem minden gyártó szeretne LLVM-et használni a meghajtókhoz. A problémák a SPIR 1.2-re és 2.0-ra is vonatkoznak, mivel előbbi az LLVM 3.2-re, míg utóbbi az LLVM 3.4-re épít. Ennek következtében a SPIR 1.2 és 2.0 támogatásához szükséges lett volna az LLVM 3.2 és 3.4 beépítésére a meghajtókba, és ez így lett volna minden új SPIR verzióval, mivel az LLVM fejlesztésekor a kompatibilitásra koncepcióból nem figyel oda a közösség.

A SPIR-V a fentieken annyiban változtat, hogy maga az alap nem az LLVM-re épít. A Khronos Group célkitűzése egy olyan egységes reprezentáció volt, amely natívan támogatja a compute és a grafikai konstrukciókat. Ezzel a SPIR-V nem csak az OpenCL 2.1, hanem a hamarosan érkező Vulkan API része is lesz. Utóbbit megjelenéséig nem várt a Khronos Group, de a SPIR-V-re akár most is lehet fordítani OpenCL C és C++ nyelven írt shadereket, amelyek majd a Vulkan API-n majd futtathatók lesznek.

A SPIR-V 1.0-t a Vulkan API miatt szinte mindenki támogatni fogja, míg az OpenCL 2.1 API esetében a támogatást egyelőre csak az AMD és az Intel jelentette be, de később természetesen bárki biztosíthatja a megfelelő meghajtókat.

Azóta történt

Előzmények

Hirdetés