NVIDIA predstavila CUDA Rust pre vývoj jadier GPU v jazyku Rust.

Spoločnosť NVIDIA oznámila vývoj sady nástrojov CUDA Rust, ktorá umožňuje jazyku Rust vyvíjať jadrá bežiace na GPU. Sada nástrojov zaisťuje bezpečnosť pamäte počas kompilácie a zabraňuje vzniku pretekov. V budúcom roku sa plánuje vývoj CUDA Rust na úroveň vhodnú pre produkčné projekty, podobne ako sady nástrojov CUDA C++ a CUDA Python.

Nástrojová sada CUDA Rust podporuje dva modely pre vývoj paralelných jadier: SIMT (Single Instruction, Multiple Threads) a Tile. Model SIMT umožňuje nízkoúrovňovú definíciu jedného vlákna, spustenie a správu tisícov takýchto vlákien. Model Tile ponúka vyššiu úroveň abstrakcie, kde namiesto explicitnej správy jednotlivých vlákien sú definované algoritmy pre prácu s dátovými blokmi (dlaždicami) a kompilátor Tile IR zabezpečuje všetku manipuláciu s vláknami, synchronizáciu prístupu, správu pamäte a distribúciu údajov medzi tenzorovými jadrami.

Pre vývoj v jazyku Rust s použitím modelu SIMT sa vyvíja kompilátor cuda-oxide, ktorý umožňuje kompiláciu kódu v jazyku Rust s použitím štandardného typového systému a modelu vlastníctva Rust priamo do inštrukcií na vykonanie v... virtuálny prístroj CUDA PTX (Parallel Thread Execution). Jadrá GPU sú napísané v bežnom Ruste, ale bežia v prostredí no_std a môžu používať iba funkcie z knižnice libcore a špecializované abstrakcie Rustu bez prístupu k štandardnej knižnici Rustu (libstd).

Jadrá CUDA napísané v Ruste umožňujú použitie ochrany typov (safe), použitie nebezpečných blokov a prístup k nízkoúrovňovým hardvérovým inštrukciám. Pre zaistenie bezpečnosti sa navrhuje typ DisjointSlice, ktorý zabezpečuje, že každé vlákno má exkluzívny prístup iba k svojim vlastným údajom. Kód cuda-oxide je licencovaný pod licenciou Apache 2.0.

Na implementáciu modelu Tail sa navrhuje knižnica cutile-rs. Umožňuje použitie idiomatického jazyka Rust na vytváranie kódu, ktorý sa kompiluje priamo do jadier CUDA. Cutile-rs aplikuje prísne pravidlá vlastníctva a požičiavania jazyka Rust na kód bežiaci na GPU. Jadro je implementované ako jednovláknový program pracujúci s dátovým blokom a kompilátor automaticky rozdeľuje výpočet do vlákien a zabezpečuje ich synchronizáciu. Vláknam je udelený zdieľaný prístup k nemenným tenzorom a meniteľné tenzory sú rozdelené do disjunktných blokov, aby sa zabezpečil bezpečný prístup. Kód cutile-rs je distribuovaný pod licenciou Apache 2.0.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster