CLUDA a Mesa-ban: Gallium3D API-t valósítanak meg NVIDIA CUDA illesztőprogram API felett

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A nyílt forráskódú grafikus könyvtárak világában most hétvégi meglepetésként Karol Herbst, a Red Hat mérnöke és a Rusticl vezető fejlesztője, egy Mesa merge request-et nyújtott be egy új projekt, a CLUDA számára. Ez a kezdeményezés egy compute-only meghajtót valósít meg, amely a Gallium3D API-t építi az NVIDIA CUDA driver API-ra.

A CLUDA lényege, hogy lehetővé teszi a Gallium3D API használatát számítási feladatokra az NVIDIA CUDA zárt meghajtó infrastruktúráján keresztül. Jelenleg a fő fókusz az OpenCL támogatása, különösen a Rusticl környezetben, amely Rust alapú OpenCL implementációkat kínál. A "CLUDA" egyelőre munkanevként szerepel.

Hogyan működik a CLUDA?

A Mesa CLUDA meghajtó a libcuda.so könyvtárat célozza, és a folyamat a következőképpen zajlik:

  • A Mesa közös NIR (intermediate representation) kódját NVIDIA PTX-re alakítja,
  • Az így előállított PTX kódot az NVIDIA zárt compute stack kezeli,
  • A tesztelések eddig főként NVIDIA RTX 40 / Ampere hardveren történtek.

A teljesítmény a projekt korai állapotához képest kiemelkedő. Például a LuxMark benchmarkon a CLUDA meghajtó NVIDIA RTX A6000 kártyán 57,702 pontot ért el, míg az NVIDIA saját meghajtó stackje 64,009 pontot produkált. Ez azt jelenti, hogy a CLUDA már közel 90%-os teljesítményt nyújt a zárt NVIDIA meghajtóhoz képest, miközben a NIR → PTX konverzió és egyéb különbségek kis teljesítményveszteséget okoznak.

Karol Herbst megjegyzése a projekt kapcsán

Karol Herbst a merge request-ben elmondta, hogy a projektet gyorsan indította el, miután hozzáférést kapott egy NVIDIA GPU-hoz, és fő célja az volt, hogy az OpenCL bizonyos hiányzó kiterjesztéseit támogassa a zárt driveren futtatott alkalmazások számára. A projekt során rengeteget tanult a CUDA és PTX működéséről is.

A CLUDA lehetőséget kínál mindazoknak, akik szeretnék OpenCL-t futtatni az NVIDIA zárt meghajtóin, és akár további OpenCL kiterjesztéseket is implementálhatnak. A projekt nyílt merge request-je további részleteket és fejlesztési információkat tartalmaz minden érdeklődő fejlesztő számára.

További információk a CLUDA-ról és a fejlesztés részleteiről elérhetők a Mesa hivatalos beolvasztási kérelem oldalán.