Hirdetés

Mostantól OpenCL C kódokkal is etethető Vulkan API

A Codeplay és a Google nyílt forráskódú eszköze egyelőre még prototípus, de rendkívül ígéretes fejlesztés.

A Vulkan API egyik sajátossága volt már az első verzió óta, hogy az egyetlen nyelv, amit elfogadott az a SPIR-V volt. Ez nyilván egy fontos koncepciót valósított meg, ugyanis a Khronos Group már az elején elárulta, hogy a céljuk a magasabb szintű nyelvek szempontjából a szabad választás lehetősége, de persze az elején, illetve még ma is a GLSL nyelv az egyetlen normálisan támogatott forma a Vulkan API-ban. Ez azonban nem marad így örökké, ugyanis mindig is az volt a terv, hogy az OpenCL C nyelvből is fordítható legyen SPIR-V kód. Ez eddig leginkább azért nem valósult meg a Vulkan API-ban, mert valójában nem egy, hanem két SPIR-V verzió van: egy a grafikai és egy a compute API-hoz. Annak tehát nincs túl sok jelentősége, hogy OpenCL API-val már lehetséges OpenCL C nyelvből SPIR-V kódot fordítani, a Vulkan API-n belül ugyanis ennek a kódnak a használata nem lehetséges,  köszönhetően az eltérő specifikációknak.

A jó hír, hogy a Vulkan API-t a Khronos Group folyamatosan egészíti ki, így korábban például elérhetővé vált a KHR_variable_pointers nevű SPIR-V és Vulkan kiterjesztés, amelyek a pointer értékek hordozhatóságát javítják, így a SPIR-V grafikai verziója közelebb került a compute specifikációkhoz, emellett az előző héten elérhetővé váltak a VK_KHR_16bit_storage és SPV_KHR_16bit_storage kiterjesztések is. Ezek elsődlegesen a Codeplay fejlesztései, és a Google segítségével megvalósított "clspv" nevű projekthez volt rájuk szükség.

A nem túl figyelemfelkeltő "clspv" név egy olyan nyílt forráskódú eszközt rejt, amely lehetővé teszi az OpenCL C nyelv részhalmazának SPIR-V-re történő fordítását, méghozzá úgy, hogy a kapott kódot a Vulkan API-n is lehessen futtatni. A fejlesztés egyelőre prototípus állapotban van, tartalmaz ismert hibákat is, viszont rengeteg kernel fordításával megbirkózik. A rendszer a legújabb LLVM és Clang kódra épít, a fordítás szempontjából pedig először SPIR-re, majd SPIR-V-re fordít.

Hosszabb távon nyilván a cél az lenne, hogy a Vulkan API-hoz írható legyen OpenCL C-ben is shader, amelyet le lehet fordítani SPIR-V-re. Ez azért kritikus fontosságú, mert a Vulkan API a compute nyelv szempontjából a GLSL 4.5-re épít, ami rendkívül túlkoros az elérhető képességek tekintetében, ami pedig korlátozhatja a szoftverfejlesztéseket. A OpenCL C nyelv elérhetővé tétele jelentősen javítana az aktuális helyzeten. A "clspv" az alábbi oldalon érhető el.

Azóta történt

Előzmények

Hirdetés