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.