Bemutatkozott az OpenCL 2.1

Az idei GDC alkalmával a Khronos Group nem szeretne megpihenni és a Vulkan API mellett bejelentették az OpenCL 2.1-et is. Utóbbi alapjaiban az OpenCL 2.0-ra épül, számos nagyon hasznos kiegészítéssel, amelyek nagyban segítik majd az egyszerűbb programfejlesztést.

A legnagyobb újítás vitathatatlanul 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.


[+]

A OpenCL C++ 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 is.

Az OpenCL 2.1 másik fontos újítása a SPIR-V támogatása, amelyre OpenCL C és C++ kódot is lehet fordítani. Ez a funkció részben kapcsolódik a Vulkan API-hoz is, amely szintén a SPIR-V-t használja, így például a OpenCL C++ nyelven is lehet majd shadereket írni a Vulkan API-hoz.


[+]

A fentiek mellett az OpenCL 2.1 kapott pár egyéb hasznos újítást is. A részcsoportok (subgroups) például kiterjesztésként már elérhetők voltak, de mostantól pár extra mellett az OpenCL magjának részei. Éppen ezért kötelező is ezeket támogatni. Emellett a clCloneKernel funkció is hasznos lehet, hiszen lehetővé teszi a kernel objektumok és állapot másolását. Rendkívül fontos újítás még a feldolgozás egyes részleteinek priorizálása, amely az OpenCL 2.1-ben a parancslisták szintjén lehetségessé vált.


[+]

Az OpenCL 2.1-nek jelenleg az előzetes specifikációi készültek el, de a véglegesítés még idén megtörténhet.

Azóta történt

Előzmények

Hirdetés