Hirdetés

A Khronos Group bemutatta a SYCL 1.2-t

A Khronos Group az idei GDC-n nagyon aktívnak tekinthető, mivel az OpenGL ES 3.1 és a WebCL 1.0 mellett bemutatták a SYCL 1.2-t is, ami az OpenCL és a SPIR kiegészítésének tekinthető. Lényegében egy platformtól független absztrakciós rétegről van szó, mely az OpenCL hatékonyságát a C++ flexibilitásával ötvözi. A terv szempontjából a SYCL egyetlen C++ forrásból történő programfejlesztést kíván megvalósítani, ahol a C++ template függvényeket tartalmazhatja a host (gazda) és a device (eszköz) kód, illetve komplex algoritmusok kreálhatók, amelyeket gyorsítani lehet OpenCL-lel.

A fejlesztést delegáló Codeplay lényegében a C++ szeretné elérhetővé tenni OpenCL-en. Ebbe beletartoznak a könyvtárak, a fejlesztőeszközök, illetve hosszabb távon az OpenCL képességeit is kihasználhatná a C++ nyelv, mindezt persze jó teljesítmény mellett. A SYCL lényeges eleme még, hogy a fejlesztő szabadon kiválaszthassa a host fordítót. Ennek oka, hogy a tapasztalatok szerint a programozók szeretnek fordítóspecifikus funkciókat használni, emellett az OpenCL-es gyorsítás iránt érdeklődők jellemzően bevetnek CPU-specifikus optimalizációkat.

Andrew Richards, a Codeplay elnök-vezérigazgatója szerint általános az a nézőpont a programozók körében, hogy OpenMP-vel gyorsítsák a CPU-s kódot, míg OpenCL-lel a GPU-sat, de a megírt kódot eközben meg is szeretnék osztani a kettő között, ami nyilvánvalóan kevesebb munkát jelent számukra. Az OpenCL C a fentieket teljes mértékben támogatja ugyan, de mindenképp több forráskódra van szükség a működéshez. A SYCL ezen annyiban változtat, hogy csak egy forráskódot kell írni, miközben az igények támogatása megmarad.

A működés szempontjából a SYCL bevetésével ugyanaz a forráskód lefordítható az adott fejlesztő kedvenc fordítójával (gcc, llvm, Visual C++, stb.), amiből egy C++ objektumfájl keletkezik. Eközben ugyanannak a kódnak a fordítása a SYCL eszközre (például grafikus vezérlő) is megtörténik, aminek az eredménye az eszköz saját objektumfájlja lesz, ami többek között lehet a SPIR is. Sőt, több SYCL eszközre is lehet élni a fordítással, de ez alapvetően csak egy opció. Az objektumfájlok megléte után a SYCL futtatási környezet veszi át az irányítást, és megoldja a program futtatását OpenCL-en.

Alapvető példakód
Alapvető példakód [+]

A SYCL egyelőre csak előzetesen specifikált, így a Khronos Group jelenleg a fejlesztői visszajelzésekre kíváncsi. A végleges specifikációk csak ezután érkeznek, illetve az OpenCL 2.0 közeledtével a SYCL is továbbfejlődik az új funkciók támogatása érdekében, de a rendszer úgy van megírva, hogy a visszafelé kompatibilitást garantált legyen. Az biztos, hogy a gyártók lelkesek a kezdeményezés láttán. Az AMD, az NVIDIA és a Qualcomm teljes mértékben támogatja a SYCL-t, illetve a legtöbb ARM-os cég képviseletében a HSA alapítvány is jó iránynak tekinti a kezdeményezést.

Azóta történt

Előzmények

Hirdetés