NVIDIA teatas CUDA Rusti tööriistakomplekti edasiarendusest, mis võimaldab kasutada Rusti keelt GPU poolel käitatavate tuumade arendamiseks. Tööriistakomplekt tagab mälu kasutamise turvalisuse kompileerimise etapis ja aitab vältida võidujooksuolukordade teket. Järgmisel aastal plaanitakse CUDA Rust viia tasemeni, mis sobib reaalselt kasutatavate projektide arendamiseks, sarnaselt CUDA C++ ja CUDA Pythoni tööriistadega.
CUDA Rusti tööriistakomplekt toetab kahte paralleelselt käivitatavate tuumade arendusmudelit: SIMT (Single Instruction, Multiple Threads) ja Tale. SIMT-mudel võimaldab madalal tasemel määrata ühe lõime loogika, käivitada tuhandeid selliseid lõimi ja neid hallata. Tile-mudel pakub kõrgemat abstraktsioonitaset, kus üksikute lõimede otsese juhtimise asemel kirjeldatakse andmeplokkidega (tile) töötamise algoritme ning kõik lõimedega seotud toimingud, juurdepääsu sünkroonimine, mäluhaldus ja andmete jaotamine tensorituumade vahel võtab enda peale Tile IR kompilaator.
Rusti keeles arendamiseks SIMT-mudelit kasutades arendatakse kompilaatorit cuda-oxide, mis võimaldab kompileerida Rusti koodi, mis kasutab Rusti tavapärast tüübissüsteemi ja omandusmudelit, otse käitamiseks mõeldud käskudeks virtuaalses masinas CUDA PTX-is (Parallel Thread Execution). GPU tuumad luuakse tavalises Rustis, kuid neid käitatakse no_std keskkonnas ning need saavad kasutada ainult libcore teegi funktsioone ja spetsialiseeritud Rusti abstraktsioone, ilma ligipääsuta Rusti standardteegile (libstd).
Rustis kirjutatud CUDA tuumades on lubatud kasutada tüübisüsteemil põhinevat kaitset (safe), unsafe-plokke ning pöörduda madala taseme riistvarakäskude poole. Turvalisuse tagamiseks pakutakse tüüpi DisjointSlice, mis garanteerib, et iga lõim saab eksklusiivse juurdepääsu ainult oma andmetele. cuda-oxide'i kood levitatakse Apache 2.0 litsentsi alusel.
Tail-mudeli rakendamiseks pakutakse teeki cutile-rs, mis võimaldab kasutada idiomaatilist Rusti keelt otse CUDA-tuumadeks kompileeritava koodi loomiseks. Cutile-rs rakendab Rustis pakutavaid rangeid omandi- ja laenutusreegleid GPU-l käivitatavale koodile. Tuum vormistatakse ühe lõime programmina, mis töötab andmeplokiga, ning kompilaator jagab arvutused ise lõimedeks ja tagab nende sünkroonimise. Lõimedele võimaldatakse ühiskasutus muutumatute tensoritega ning turvaliseks juurdepääsuks muudetavatele tensoritele kasutatakse nende jaotamist mittekateteks plokkideks. Cutile-rs-i kood levib Apache 2.0 litsentsi alusel.
Allikas: opennet.ru
