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

NVIDIA je najavila razvoj CUDA Rust alata, koji omogućava Rust jeziku razvoj kernela koji rade na GPU-u. Alat osigurava sigurnost memorije tokom kompajliranja i sprječava uslove utrke. Planirano je da se sljedeće godine CUDA Rust razvije do nivoa pogodnog 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ćava definiciju jedne niti na niskom nivou, pokretanje i upravljanje hiljadama takvih niti. Tile model nudi viši nivo apstrakcije, gdje se umjesto eksplicitnog upravljanja pojedinačnim nitima definišu algoritmi za rad na blokovima podataka (pločicama), a Tile IR kompajler obrađuje svu manipulaciju nitima, sinhronizaciju pristupa, upravljanje memorijom i distribuciju podataka preko tenzorskih jezgara.

Za razvoj u Rust jeziku korištenjem SIMT modela, razvija se cuda-oxide kompajler, koji omogućava kompajliranje koda u Rust jeziku, korištenjem standardnog sistema tipova i Rust modela vlasništva, direktno u instrukcije za izvršavanje u... virtuelna mašina CUDA PTX (Paralelno izvršavanje niti). GPU kerneli su napisani u regularnom Rustu, ali se pokreću 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ćavaju korištenje zaštite tipova (safe), korištenje nesigurnih blokova i pristup hardverskim instrukcijama niskog nivoa. Radi osiguranja sigurnosti, predložen je tip DisjointSlice, koji osigurava da svaka nit ima ekskluzivan pristup samo svojim podacima. CUDA-oxide kod je licenciran pod Apache 2.0 licencom.

Za implementaciju Tail modela, predložena je biblioteka cutile-rs. Ona omogućava korištenje Rust idiomatskog jezika za kreiranje koda koji se direktno kompajlira u CUDA kernele. Cutile-rs primjenjuje Rustova stroga pravila vlasništva i posuđivanja na kod koji se izvršava na GPU-u. Kernel je implementiran kao jednonitni program koji radi na bloku podataka, a kompajler automatski dijeli izračunavanje na niti i osigurava njihovu sinhronizaciju. 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 se distribuira pod Apache 2.0 licencom.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster