NVIDIA tilkynnti þróun CUDA Rust verkfærakistu, sem gerir Rust forritunarmálinu kleift að þróa kjarna sem keyra á skjákortinu. Verkfærakistukerfið tryggir öryggi minnis við þýtingu og kemur í veg fyrir kapphlaup. Á næsta ári er áætlað að CUDA Rust verði þróað á það stig sem hentar fyrir framleiðsluverkefni, svipað og CUDA C++ og CUDA Python verkfærakistu.
CUDA Rust verkfærakeðjan styður tvær gerðir fyrir þróun samsíða kjarna: SIMT (Single Instruction, Multiple Threads) og Tile. SIMT líkanið gerir kleift að skilgreina einn þráð á lágu stigi, ræsa og stjórna þúsundum slíkra þráða. Tile líkanið býður upp á hærra stig abstraktunar, þar sem í stað þess að stjórna einstökum þráðum beint eru reiknirit fyrir að vinna með gagnablokkir (tile) skilgreind og Tile IR þýðandinn sér um alla þráðastjórnun, aðgangssamstillingu, minnisstjórnun og gagnadreifingu yfir tensor kjarna.
Fyrir þróun í Rust tungumálinu með SIMT líkaninu er verið að þróa cuda-oxide þýðandann, sem gerir kleift að þýða kóða í Rust tungumálinu, með því að nota staðlaða týpukerfið og Rust eignarhaldslíkanið, beint í leiðbeiningar til keyrslu í. sýndarvél CUDA PTX (Parallel Thread Execution). Kjarnar GPU eru skrifaðir í venjulegu Rust en keyra í no_std umhverfi og geta aðeins notað föll úr libcore bókasafninu og sérhæfðum Rust abstraktum, án aðgangs að venjulegu Rust bókasafninu (libstd).
CUDA kjarnar skrifaðir í Rust leyfa notkun á tegundarvernd (öruggt), notkun óöruggra blokka og aðgang að lágstigs vélbúnaðarleiðbeiningum. Til að tryggja öryggi er lagt til að nota DisjointSlice gerðina, sem tryggir að hver þráður hafi einkarétt á aðgangi að sínum eigin gögnum. Cuda-oxide kóðinn er leyfisveittur undir Apache 2.0 leyfinu.
Til að útfæra Tail líkanið er lagt til cutile-rs bókasafnið. Það gerir kleift að nota Rust idiomatic tungumálið til að búa til kóða sem þýtur beint í CUDA kjarna. Cutile-rs notar ströng eignarhalds- og lánsreglur Rust á kóða sem keyrir á skjákortinu. Kjarninn er útfærður sem einþráða forrit sem keyrir á gagnablokk og þýðandinn skiptir útreikningunum sjálfkrafa í þræði og tryggir samstillingu þeirra. Þræðirnir fá sameiginlegan aðgang að óbreytanlegum tensorum og breytanlegir tensorar eru skipt í sundurleita blokkir til að tryggja öruggan aðgang. Cutile-rs kóðinn er dreift undir Apache 2.0 leyfinu.
Heimild: opennet.ru
