Nvidia je predstavila CUDA Rust, zajednički smjer za dva otvorena projekta koji programerima omogućuju da GPU jezgre pišu izravno u Rustu. cuda-oxide nudi klasični SIMT pristup s kontrolom niti i memorije, dok cutile-rs radi na višoj razini, nad pločicama podataka koje prevoditelj raspoređuje na hardver. Najava je važna za AI infrastrukturu jer Rust već prodire u sustave za posluživanje modela, upravljačke programe i agentne okoline, ali Nvidia istodobno upozorava da su oba puta rana i da nijedan još nije spreman za produkciju.
Jedan jezik, dva modela programiranja
GPU jezgra mali je program koji se istodobno izvršava na velikom broju grafičkih procesorskih jezgri. CUDA C++ tradicionalno koristi SIMT, skraćeno od „jedna instrukcija, više niti”: programer opisuje posao jedne niti, a zatim pokreće tisuće njihovih kopija. cuda-oxide taj model prenosi u Rust. Kao prilagođeni pozadinski dio prevoditelja presreće funkcije označene kao jezgre, provodi ih kroz Rustov međukod MIR, okvir Pliron i LLVM IR te na kraju proizvodi PTX, Nvidijin međujezik za izvršavanje na GPU-u. Kod za procesor domaćina i GPU može ostati u istoj datoteci i graditi se jednom Cargo naredbom, bez izdvojenog paketa samo za jezgre. To smanjuje organizacijski jaz između dviju strana programa, iako ne uklanja složenost samog GPU programiranja.
cutile-rs radi razinu više. Umjesto pojedinačne niti, programer opisuje operaciju nad pločicom, odnosno pravokutnim dijelom tenzora. Prevoditelj zatim odlučuje koliko će stvarnih GPU niti obaviti taj posao i kako će ga prilagoditi određenoj arhitekturi. Makro ugrađuje apstraktno sintaksno stablo jezgre u izvršnu datoteku domaćina, a kod se pri prvom pozivu JIT-prevodi kroz CUDA Tile IR. Operacije nad tenzorima opisuju se lijeno: stvarno se izvršavanje odgađa do točke sinkronizacije, pa se niz pripreme podataka, poziva jezgre i kopiranja rezultata može zabilježiti kao jedan lanac. Nvidia zato preporučuje Tile kao prvi izbor, a SIMT za slučajeve u kojima je važna ručna kontrola niti i memorije.
Rustovo vlasništvo dolazi do granice GPU-a
Glavni argument za Rust nije nova sintaksa nego provjera pristupa memoriji prije pokretanja programa. U paralelnom kodu tisuće niti mogu bez zajamčenog redoslijeda čitati i mijenjati isti spremnik. Ako dvije niti dođu na istu adresu, a barem jedna piše, rezultat može ovisiti o vremenu izvođenja i kvar se teško ponavlja. U Nvidijinim primjerima prevoditelj odbija pokušaj da isti izlazni spremnik istodobno bude ulaz i promjenjivi izlaz.
Dva projekta tu sigurnost izražavaju različito. cuda-oxide koristi tip DisjointSlice, koji svakoj niti daje promjenjiv pristup samo njezinu elementu, te ugovor pokretanja kojim se provjerava geometrija blokova. cutile-rs na domaćinu dijeli promjenjivi tenzor na nepokrivajuće pločice i vlasništvo nad njima prenosi preko granice pokretanja. To ne uklanja svaku opasnost: u SIMT putu zajednička memorija trenutačno zahtijeva unsafe, a niži nivo kontrole uvijek nosi više odgovornosti.
Dostupno za pokuse, ne za produkcijske obveze
Razlika u zrelosti vidi se već u instalaciji. cuda-oxide je rana alfa i traži Linux, GPU računalne sposobnosti 8.0 ili novije, CUDA 12.x ili noviju, clang s libclang zaglavljima i točno određenu noćnu verziju Rusta. Prvi build prevoditeljskog pozadinskog sustava može potrajati, a kasniji koriste predmemoriju. Projekt je javno dostupan u organizaciji NVlabs, ali takav lanac ovisnosti još nije zamjena za uhodani produkcijski alat.
cutile-rs je dalje odmaknuo: paket se dodaje standardnom Cargo naredbom i radi sa stabilnim Rustom 1.89 ili novijim. Nvidijin aktualni primjer ipak zahtijeva Linux, GPU računalne sposobnosti najmanje 8.0 i CUDA 13.3. Izdanje 0.3.1 od 6. rujna donijelo je jednostavniju instalaciju, profiliranje, eksperimentalno automatsko ugađanje i brži put pokretanja, ali bilješke istodobno priznaju lomljive promjene API-ja čak i unutar zakrpe. To je koristan podsjetnik da dostupnost koda nije isto što i stabilnost platforme.
Obećavajući rezultati i važna ograničenja
Rad „Fearless Concurrency on the GPU”, koji su objavili autori povezani s projektom, tvrdi da sigurnosne apstrakcije ne moraju pojesti performanse. Na Nvidiji B200 cuTile Rust je prema njihovim mjerenjima dosegnuo 7 TB/s u elementnim operacijama i 2 PFlop/s u matričnom množenju GEMM, 96 posto rezultata cuBLAS-a. Grout, eksperimentalni mehanizam za zaključivanje izgrađen na istom sustavu, dosegnuo je 171 generirani token u sekundi za Qwen3-4B na RTX-u 5090 i 82 za Qwen3-32B na B200.
Te brojke treba čitati kao rezultate autora, a ne kao neovisnu potvrdu na cijelom tržištu GPU-ova, modela i radnih opterećenja. Važniji kratkoročni signal jest Nvidijina odluka da razvoj jezika koji se već koristi u njezinu upravljačkom programu Nova i jezgri sustava Dynamo proširi sve do GPU jezgri. Kompanija kaže da će CUDA Rust sazrijevati tijekom 2027. i poslije, ali nije zadala datum produkcijske spremnosti, politiku dugoročne kompatibilnosti ni širu podršku izvan Linuxa.
Zašto je važno
Ako projekti sazriju, timovi koji grade AI sustave mogli bi isti jezik i dio istih sigurnosnih pravila koristiti od poslužiteljske infrastrukture do prilagođenih GPU jezgri, uz manju potrebu za miješanjem Rusta i CUDA C++-a.
Što još ne znamo
- Nijedan projekt još nije spreman za produkciju, pokrivenost je nepotpuna, a API-ji će se mijenjati.
- Trenutačni putovi zahtijevaju Linux i relativno nov Nvidijin GPU, a cuda-oxide dodatno traži prikvačenu noćnu verziju Rusta.
- Objavljeni rezultati performansi potječu od autora projekta i nisu neovisno reproducirani na širokom rasponu sustava.