Az NVIDIA bemutatta a CUDA Rustot GPU-kernelíráshoz

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Az NVIDIA bővíti a CUDA-t natív Rust támogatással, és két új megközelítést vezet be, amelyekkel a fejlesztők közvetlenül Rust-ban írhatnak GPU-kernelkódot, ahelyett hogy CUDA C++-ban vagy más nyelven írt kernelekre támaszkodnának.

Eddig a Rust alkalmazások ugyan el tudtak indítani CUDA kerneleket, de a GPU-oldali kernel kódot jellemzően máshol írták. Az NVIDIA új CUDA Rust kezdeményezése ezt a rést zárja be: közvetlenül PTX-re fordítja a Rust-ban írt GPU-kerneleket, vagyis arra a köztes reprezentációra, amelyet az NVIDIA GPU-k használnak.

A cég két külön irányt követ: a cuda-oxide és a cutile-rs projekteket. Mindkettő Rust fejlesztőket céloz, de eltérő GPU-programozási modellt követnek.

Az első, a cuda-oxide, a CUDA C++-ból ismert hagyományos SIMT modellt használja. A fejlesztők közvetlenül szálakkal, blokkokkal, indexeléssel és memóriával dolgoznak, miközben a projekt egy egyedi rustc code-generation backenddel biztosítja, hogy a Rust kernel kód a Rust MIR-en, a Plironon és az LLVM IR-en keresztül végül PTX-re forduljon.

A második megközelítés, a cutile-rs, magasabb absztrakciós szinten működik, az NVIDIA CUDA Tile programozási modelljére építve. A fejlesztők nem az egyes GPU-szálak feladatát írják le, hanem adatlapkákon (tile-okon) dolgoznak, miközben a fordító kezeli az olyan részleteket, mint hogy ezek a tile-ok hogyan vetülnek le a fizikai GPU-szálakra.

A cutile-rs emellett tensor-particionálást és a Rust tulajdonlási szabályait használja. Minden tile kizárólagos hozzáférést kap egy tensor írható részéhez, így bizonyos aliasolási és versenyhelyzetből adódó hibákat már fordítási időben el lehet utasítani, nem csak a GPU-futás során derülnek ki.

Az NVIDIA szerint a két modell egymást egészíti ki, nem egymással versenyez. A Tile modellt ajánlják kiindulópontnak, ha a fejlesztőknek nincs szükségük a szál-leképezés és a memória-viselkedés közvetlen vezérlésére, míg a SIMT továbbra is elérhető azokhoz a feladatokhoz, ahol ez az alacsony szintű kontroll fontos.

A cég a CUDA Rust, CUDA C++ és CUDA Python közötti együttműködést is tervezi. Így a fejlesztők a jövőben vegyesen használhatják a különböző CUDA frontendet, és nem kell egyetlen nyelvhez kötniük egy teljes alkalmazást.

Az NVIDIA egyúttal figyelmeztet, hogy a funkciók köre még nem teljes, és a API-k változni fognak a fejlesztés előrehaladtával. A vállalat 2027-ig és azon túl is bővíteni és érlelni tervezi a CUDA Rust-at.

További részletekért nézd meg az NVIDIA bejelentéseit.