Hirdetés

Végleges formát öntött az Intel oneAPI

Az 1.0-s specifikáció számos komponensen keresztül kínál kvázi hardverfüggetlen programozást.

Az Intel a CPU-i mellett évek óta egyre többet beszél az FPGA-król, a GPU-król, illetve a specifikus gyorsítókról, gondolva itt például az AI-ra tervezett dizájnokra. A vállalat ezekre a területekre ma már saját rendszereket is kínál, hiszen egyre inkább azt vallják, hogy az egyes feladatok azokon a hardvereken fussanak, amelyeken a legjobb a sebesség, illetve a hatékonyság. Persze nem először fogalmazódott már meg ez az állítás a piacon, ami nem véletlen, mert van benne ráció. Léteznek ugyanis olyan komplex munkafolyamatok, amelyek a CPU-n működnek optimálisan, de bizonyos részfeladatokat érdemes gyorsítókra bízni. Utóbbi szempontból bonyolódnak a dolgok, hiszen a gyorsító maga lehet FPGA, GPU, vagy akár egyedi rendszer, ebből a szempontból a legegyszerűbb példa a gépi tanulás, hiszen ott a feldolgozás nagyjából 95%-a mátrixszorzás, amit nagyon is jól lehet specifikusan erre tervezett lapkával célozni.

A hardveres rész világos, de kell valami, amivel ezek programozása hatékonyan megoldható, és az Intel koncepciójában itt jön képbe a OneAPI, ami tulajdonképpen egy olyan platform, amivel a kódot egyszer kell megírni, és az végül bármilyen hardveren futtatható, legyen szó CPU-ről, GPU-ról, FPGA-ról, vagy specifikus dizájnt használó gyorsítóról, de leginkább ezek kombinálása lehet kifejezetten érdekes, amivel a rendszerben található, különbözően megtervezett hardverelemek egységesen használhatók ki.


[+]

A oneAPI fő komponense a Data Parallel C++ nevű nyelvvariáns, amivel gyakorlatilag programozhatók az eltérő hardverek, a CPU-któl kezdve a különböző gyorsítókig. Ezzel a kód újrahasznosíthatósága igen magas lehet, miközben a rendszer azért megadja a lehetőséget a hardverspecifikus optimalizálásra is. Maga a Data Parallel C++ a SYCL-re épül, ami a Khronos Group platformfüggetlen absztrakciós rétege. Ez biztosítja azt flexibilis alapot, hogy egyetlen C++ forrásból megoldható legyen maga programfejlesztés.

Mivel az LLVM/Clang-alapú fordítóinfrastruktúra számos függvénykönyvtárhoz kínál egyenes utat, a oneAPI egyéb komponenseket is kínál. Ezek közül a legfontosabb a oneDPL, ami biztosítja a C++ sztenderd függvénykönyvtárral, a Parallel STL-lel, illetve az egyéb kiegészítésekkel való programozást.

A fentieken túl van még pár gépi tanulással kapcsolatos (oneDNN és oneCCL), tudományos munkákhoz (oneDAL), videofeldolgozáshoz (oneVPL), illetve szálszintű párhuzamossághoz (oneTBB) való kiegészítés, de nem hiányoznak a nagy teljesítményű matematikai rutinok sem (oneMKL). Végül lényeges eleme a rendszernek még a Level Zero API, ami gyakorlatilag a oneAPI nyelveinek és függvénykönyvtárainak alacsony szintű rendszerinterfésze.

Az Intel természetesen a oneAPI-t a saját hardvereihez tervezte, de mivel a forráskódja nyílt, így más gyártó rendszereihez is hozzáigazíthatók. Többek között a Codeplay – az Intellel együttműködve – már dolgozik az NVIDIA GPU-ira tervezett implementáción. A CPU-s résszel igazából nem szokott gond lenni, hiszen ott azért az utasításarchitektúrák elég jól dokumentáltak és ismertek, így várhatóan jól fog működni a csomag a konkurens processzorokon, ideértve nem csak az AMD megoldásait, hanem az ARM-ot és az IBM Powert is.

A oneAPI 1.0 specifikációja az alábbi oldalon keresztül érhető el, míg a forráskód a GitHubon férhető hozzá.

  • Kapcsolódó cégek:
  • Intel

Azóta történt

Előzmények

Hirdetés