NVIDIA je predstavila CUDA Rust za razvoj GPU kernela u Rust programskom jeziku.

NVIDIA je najavila razvoj CUDA Rust alata, koji omogućuje Rust jeziku razvoj kernela koji se izvode na GPU-u. Alat osigurava sigurnost memorije tijekom kompajliranja i sprječava uvjete utrke. Sljedeće godine planira se razvoj CUDA Rust-a do razine pogodne za produkcijske projekte, slično CUDA C++ i CUDA Python alatima.

CUDA Rust alatni lanac podržava dva modela za razvoj paralelnih kernela: SIMT (Single Instruction, Multiple Threads - Jedna instrukcija, Više niti) i Tile. SIMT model omogućuje definiciju jedne niti na niskoj razini, pokretanje i upravljanje tisućama takvih niti. Tile model nudi višu razinu apstrakcije, gdje se umjesto eksplicitnog upravljanja pojedinačnim nitima definiraju algoritmi za rad na blokovima podataka (pločicama), a Tile IR kompajler obrađuje svu manipulaciju nitima, sinkronizaciju pristupa, upravljanje memorijom i distribuciju podataka po tenzorskim jezgrama.

Za razvoj u Rust jeziku korištenjem SIMT modela, razvija se cuda-oxide kompajler koji omogućuje kompajliranje koda u Rust jeziku, korištenjem standardnog sustava tipova i Rust modela vlasništva, izravno u instrukcije za izvršavanje u... virtualni stroj CUDA PTX (Paralelno izvršavanje niti). GPU kerneli su napisani u regularnom Rustu, ali se izvode u no_std okruženju i mogu koristiti samo funkcije iz libcore biblioteke i specijalizirane Rust apstrakcije, bez pristupa standardnoj Rust biblioteci (libstd).

CUDA kerneli napisani u Rustu omogućuju korištenje zaštite tipova (sigurno), korištenje nesigurnih blokova i pristup hardverskim instrukcijama niske razine. Kako bi se osigurala sigurnost, predlaže se tip DisjointSlice, koji osigurava da svaka nit ima isključivi pristup samo vlastitim podacima. CUDA-oxide kod je licenciran pod Apache 2.0 licencom.

Za implementaciju Tail modela predlaže se biblioteka cutile-rs. Omogućuje korištenje Rust idiomatskog jezika za stvaranje koda koji se izravno kompajlira u CUDA kernele. Cutile-rs primjenjuje Rustova stroga pravila vlasništva i posuđivanja na kod koji se izvršava na GPU-u. Jezgra je implementirana kao jednonitni program koji radi na bloku podataka, a kompajler automatski dijeli izračun u niti i osigurava njihovu sinkronizaciju. Nitima se dodjeljuje zajednički pristup nepromjenjivim tenzorima, a promjenjivi tenzori su podijeljeni u disjunktne blokove kako bi se osigurao siguran pristup. Kod cutile-rs distribuira se pod Apache 2.0 licencom.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster