NVIDIA het die ontwikkeling van die CUDA Rust-gereedskapskis aangekondig, wat die Rust-taal in staat stel om kernels te ontwikkel wat op die GPU loop. Die gereedskapskis verseker geheueveiligheid tydens samestellingstyd en voorkom wedrentoestande. Volgende jaar word beplan om CUDA Rust ontwikkel te word tot 'n vlak wat geskik is vir produksieprojekte, soortgelyk aan die CUDA C++ en CUDA Python-gereedskapskis.
Die CUDA Rust-gereedskapsketting ondersteun twee modelle vir die ontwikkeling van parallelle kerns: SIMT (Enkele Instruksie, Veelvuldige Drade) en Tile. Die SIMT-model maak voorsiening vir die lae-vlak definisie van 'n enkele draad, die bekendstelling en bestuur van duisende sulke drade. Die Tile-model bied 'n hoër vlak van abstraksie, waar algoritmes vir die werking op datablokke (teëls) gedefinieer word, in plaas van om individuele drade eksplisiet te bestuur, en die Tile IR-samesteller alle draadmanipulasie, toegangsinchronisasie, geheuebestuur en dataverspreiding oor tensorkerne hanteer.
Vir ontwikkeling in die Rust-taal met behulp van die SIMT-model, word die cuda-oksied-samesteller ontwikkel, wat dit moontlik maak om kode in die Rust-taal saam te stel, met behulp van die standaardtipestelsel en die Rust-eienaarskapmodel, direk in instruksies vir uitvoering in. virtuele masjien CUDA PTX (Parallelle Draaduitvoering). GPU-kerne word in gewone Rust geskryf, maar loop in 'n no_std-omgewing en kan slegs funksies van die libcore-biblioteek en gespesialiseerde Rust-abstraksies gebruik, sonder toegang tot die standaard Rust-biblioteek (libstd).
CUDA-pitte wat in Rust geskryf is, laat die gebruik van tipebeskerming (veilig), die gebruik van onveilige blokke en toegang tot lae-vlak hardeware-instruksies toe. Om veiligheid te verseker, word die DisjointSlice-tipe voorgestel, wat verseker dat elke draad eksklusiewe toegang tot slegs sy eie data het. Die cuda-oxide-kode word gelisensieer onder die Apache 2.0-lisensie.
Om die Tail-model te implementeer, word die cutile-rs-biblioteek voorgestel. Dit maak die gebruik van die Rust-idiomatiese taal moontlik om kode te skep wat direk na CUDA-pitte kompileer. Cutile-rs pas Rust se streng eienaarskap- en leenreëls toe op kode wat op die GPU loop. Die kern word geïmplementeer as 'n enkeldraadprogram wat op 'n datablok werk, en die samesteller verdeel die berekening outomaties in drade en verseker hul sinchronisasie. Die drade kry gedeelde toegang tot onveranderlike tensors, en veranderlike tensors word in disjunkte blokke verdeel om veilige toegang te verseker. Die cutile-rs-kode word versprei onder die Apache 2.0-lisensie.
Bron: opennet.ru
