NVIDIA je predstavila CUDA Rust za razvoj GPU jezgri na jeziku Rust

Tvrtka NVIDIA najavila je razvoj alata CUDA Rust, koji omogućuje korištenje jezika Rust za razvoj jezgri izvršavanih na strani GPU-a. Alat osigurava sigurnost u radu s memorijom tijekom faze kompilacije i sprječava pojavu stanja utrke. Sljedeće godine planiraju dovesti CUDA Rust do razine koja je pogodna za razvoj radnih projekata, sličnih alatima CUDA C++ i CUDA Python.

Alat CUDA Rust podržava dva modela razvoja paralelno izvršavanih jezgri — SIMT (Single Instruction, Multiple Threads) i Tile. Model SIMT omogućuje na niskoj razini određivanje logike jednog toka, pokretanje tisuća takvih tokova i upravljanje njima. Model Tile nudi višu razinu apstrakcije, gdje se umjesto eksplicitnog upravljanja pojedinačnim tokovima definiraju algoritmi djelovanja s blokovima podataka (tile), a sve manipulacije s tokovima, sinkronizaciju pristupa, upravljanje memorijom i raspodjelu podataka po tenzorskim jezgama preuzima kompajler Tile IR.

Za razvoj na jeziku Rust s korištenjem modela SIMT, razvija se kompajler cuda-oxide, koji omogućuje kompiliranje koda na jeziku Rust, koji koristi standardni sustav tipova i model vlasništva Rust, izravno u instrukcije za izvršavanje u virtualnoj mašini CUDA PTX (Parallel Thread Execution). Jezgre za GPU se kreiraju na običnom Rust-u, ali se izvršavaju u okruženju no_std i mogu koristiti samo funkcije iz knjižnice libcore i specijalizirane Rust-apstrakcije, bez pristupa standardnoj knjižnici Rust (libstd).

U CUDA-jesgrenama na Rustu dopuštena je primjena zaštite kroz sustav tipova (safe), korištenje blokova unsafe i pristup niskonivonim hardverskim instrukcijama. Za osiguranje sigurnosti predložen je tip DisjointSlice, koji jamči da svaki tok dobiva ekskluzivni pristup samo svojim podacima. Kod cuda-oxide distribuira se pod licencom Apache 2.0.

Za primjenu Tail modela, predložena je biblioteka cutile-rs koja omogućava korištenje idiomatskog jezika Rust za kreiranje koda koji se izravno prevodi u CUDA jezgre. Cutile-rs primjenjuje stroga pravila vlasništva i posudbe predložena u Rust-u za kod koji se izvršava na GPU-u. Jezgra se oblikuje kao jednonitna programska jedinica koja obrađuje blok podataka, a sam kompajler dijeli izračune na niti i osigurava njihovu sinhronizaciju. Nitima se omogućava zajednički pristup nepromjenjivim tenzorima, dok se za siguran pristup promjenjivim tenzorima koristi njihovo dijeljenje na nepodudarne blokove. Kod cutile-rs distribuira se pod licencom Apache 2.0.

Izvor: opennet.ru

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