Hirdetés

Kedvezőbbé teszi GPU-k egységes programozását a hipSYCL továbbfejlesztése

Soha nem volt még ilyen egyszerű egységes SYCL forráskódból a CUDA és a ROCm platformokat, illetve a CPU-kat támogatni.

A SYCL már egy ideje elég nagy ígérete a Khronos Groupnak, amellyel a C++ szeretnék elérhetővé tenni OpenCL-en. Ebbe beletartoznak a könyvtárak, a fejlesztőeszközök, illetve az OpenCL képességeit is kihasználhatja a C++ nyelv, mindezt persze jó teljesítmény mellett.

A SYCL ugyanakkor nyílt specifikációjú projekt, vagyis amellett, hogy a Khronos Group elsődlegesen az OpenCL platformhoz fejlesztette, nem tiltja az alternatív felhasználást. Emiatt született meg korábban a hipSYCL, amely gyakorlatilag implementálta a SYCL előnyeit az NVIDIA CUDA, az AMD ROCm, illetve a hipCPU és OpenMP platformokon, hogy ezeket a fejlesztők egységes SYCL kódokkal tudják célozni.

A hipSYCL nem is lett népszerűtlen, de meg kell hagyni, hogy az eredeti fordítási modell rendívül bonyolult volt, hiszen a SYCL kódból többlépcsős, forráskódból-forráskódba történő konvertálással is operáló folyamattal lett CUDA, illetve HIP forrás, majd ezeket fordították tovább az adott platformokra. Az ennyire bonyolult modelltől a fordítási procedúra időigényes volt, illetve a számos lépcső miatt a hibalehetőség is nagy volt.


[+]

A hipSYCL ötlete ugyanakkor nem volt elvetendő, így a fejlesztők elkészítették az új verziót, ami egyrészt már a SYCL 1.2.1-et implementálja, és a célozható platformokra való fordítás is jelentősen átalakult. A kiindulási pont ugyanúgy egységes SYCL forráskód lesz, de száműzték a gyártói fordítókat, így a CUDA, illetve a ROCm platformokra a syclcc-clang fordító wrapperrel lesznek generálva a kódok. Ez egyrészt lerövidíti a fordításhoz szükséges időt, illetve rendkívül robusztus alapot kínál arra, hogy az eltérő platformokon megfelelően fussanak a SYCL-ben írt programok. Mindezek mellett az egyszerűbb fordítási modell számos későbbi optimalizálás előtt nyitja meg az ajtót.

A még viszonylag korai készültségi szinten lévő hipSYCL projekt egy igen jó alap lehet arra, hogy a fejlesztők ne zárják be magukat egy platform mögé. Egyszerűen írják a kódokat szabványos keretek között, a fordításnál pedig lehet használni a gyártók saját platformjait, ha az OpenCL valamiért nem alternatíva.

Azóta történt

Előzmények

Hirdetés