NVIDIA uzņēmums paziņoja par CUDA Rust instrumenta attīstību, kas ļauj izmantot Rust valodu, lai izstrādātu kodus, kas darbojas uz GPU. Instruments nodrošina atmiņas drošību kompilācijas posmā un novērš sacensību stāvokļu rašanos. Nākamajā gadā plānots sasniegt CUDA Rust tādu līmeni, kas būtu piemērots darba projektu izstrādei, salīdzināmu ar CUDA C++ un CUDA Python instrumentiem.
CUDA Rust instruments atbalsta divus paralēli izpildītu kodu attīstības modeļus — SIMT (Single Instruction, Multiple Threads) un Tile. SIMT modelis ļauj zemas līmeņa noteikt vienas plūsmas loģiku, palaist tūkstošiem šādu plūsmu un pārvaldīt tās. Tile modelis piedāvā augstāku abstrakcijas līmeni, kur, nevis skaidri pārvaldot atsevišķas plūsmas, tiek definēti darbības algoritmi ar datu blokiem (tile), bet visas plūsmu manipulācijas, piekļuves sinhronizācija, atmiņas vadība un datu sadale starp tensoru kodiem tiek pārvaldīta ar Tile IR kompilatoru.
Izstrādājot ar Rust valodu, izmantojot SIMT modeli, tiek attīstīts cuda-oxide kompilators, kas ļauj kompilēt kodu Rust valodā, izmantojot standarta tipisko sistēmu un Rust īpašumtiesību modeli, tieši instrukcijām izpildei CUDA PTX (Parallel Thread Execution). virtuālā mašīnā GPU kodi tiek radīti parastajā Rust, taču tie tiek izpildīti no no_std vidē un var izmantot tikai funkcijas no libcore bibliotēkas un specializētām Rust abstrakcijām, bez piekļuves pie Rust standarta bibliotēkas (libstd).
CUDA kodus Rust valodā drīkst aizsargāt, izmantojot tipu sistēmu (safe), izmantojot unsafe blokos un piekļūstot zemas līmeņa aparatūras instrukcijām. Drošības nodrošināšanai tiek piedāvāts DisjointSlice tips, kas garantē, ka katra plūsma saņem ekskluzīvu piekļuvi tikai saviem datiem. Kods cuda-oxide tiek izplatīts ar Apache 2.0 licenci.
Tail modeļa izmantošanai tiek piedāvāta cutile-rs bibliotēka, kas ļauj izmantot idiomātisko Rust valodu kodēšanai, kas tiek kompilēta tieši CUDA yadro. Cutile-rs ievēro Rust piedāvātās stingrās īpašumtiesību un aizņemšanās noteikumu prasības kodam, kas tiek izpildīts GPU. Yadros tiek veidota kā vienplūsmas programma, kas strādā ar datu bloku, un kompilators pats sadala aprēķinus plūsmās un nodrošina to sinhronizāciju. Plūsmām tiek nodrošināta koplietošana ar nemainīgajiem tenzoriem, un drošam piekļuvei maināmajiem tenzoriem tiek veikta to sadale nepārklājošos blokos. Code cutile-rs tiek izplatīts ar Apache 2.0 licenci.
Avots: opennet.lv
