NVIDIA нь CUDA Rust хэрэгслийн багцыг хөгжүүлснээ зарласан бөгөөд энэ нь Rust хэлийг GPU дээр ажиллаж байгаа цөмүүдийг хөгжүүлэх боломжийг олгодог. Хэрэгслийн багц нь хөрвүүлэх үед санах ойн аюулгүй байдлыг хангаж, өрсөлдөөний нөхцөл байдлаас урьдчилан сэргийлдэг. Дараа жил нь CUDA Rust-ийг CUDA C++ болон CUDA Python хэрэгслийн багцтай төстэй үйлдвэрлэлийн төслүүдэд тохиромжтой түвшинд хүртэл хөгжүүлэхээр төлөвлөж байна.
CUDA Rust хэрэгслийн цуглуулга нь зэрэгцээ цөмүүдийг хөгжүүлэх хоёр загварыг дэмждэг: SIMT (Single Instruction, Multiple Threads) болон Tile. SIMT загвар нь ганц thread-ийн доод түвшний тодорхойлолт, мянга мянган ийм thread-ийг эхлүүлэх, удирдах боломжийг олгодог. Tile загвар нь илүү өндөр түвшний хийсвэрлэлийг санал болгодог бөгөөд тусдаа thread-ийг тодорхой удирдахын оронд өгөгдлийн блокууд (plies) дээр ажиллах алгоритмуудыг тодорхойлдог бөгөөд Tile IR хөрвүүлэгч нь бүх thread manipulation, хандалтын синхрончлол, санах ойн менежмент, тензор цөмүүдийн хоорондох өгөгдлийн тархалтыг зохицуулдаг.
SIMT загварыг ашиглан Rust хэл дээр хөгжүүлэхийн тулд cuda-oxide хөрвүүлэгчийг боловсруулж байгаа бөгөөд энэ нь стандарт төрлийн систем болон Rust эзэмшлийн загварыг ашиглан Rust хэл дээр кодыг гүйцэтгэх зааварчилгаанд шууд хөрвүүлэх боломжийг олгодог. виртуал машин CUDA PTX (Зэрэгцээ урсгалын гүйцэтгэл). GPU цөмүүд нь ердийн Rust дээр бичигдсэн боловч no_std орчинд ажилладаг бөгөөд стандарт Rust сан (libstd) руу хандахгүйгээр зөвхөн libcore сан болон тусгай Rust хийсвэрлэлүүдийн функцуудыг ашиглаж чаддаг.
Rust хэлээр бичигдсэн CUDA цөмүүд нь төрлийн хамгаалалт (аюулгүй), аюултай блокуудыг ашиглах, доод түвшний техник хангамжийн зааварчилгаанд хандах боломжийг олгодог. Аюулгүй байдлыг хангахын тулд thread бүр зөвхөн өөрийн өгөгдөлд онцгой хандалттай байхыг баталгаажуулдаг DisjointSlice төрлийг санал болгож байна. Cuda-oxide код нь Apache 2.0 лицензийн дагуу лицензлэгдсэн.
Tail загварыг хэрэгжүүлэхийн тулд cutile-rs санг санал болгож байна. Энэ нь CUDA цөм рүү шууд хөрвүүлдэг код үүсгэхийн тулд Rust хэлний хэлц үгийг ашиглах боломжийг олгодог. Cutile-rs нь GPU дээр ажиллаж байгаа кодонд Rust-ийн хатуу эзэмшил болон зээлэх дүрмийг хэрэгжүүлдэг. Цөм нь өгөгдлийн блок дээр ажилладаг дан урсгалтай програм хэлбэрээр хэрэгждэг бөгөөд хөрвүүлэгч нь тооцооллыг автоматаар урсгалд хувааж, тэдгээрийн синхрончлолыг баталгаажуулдаг. Урсгалууд нь өөрчлөгдөшгүй тензоруудад хуваалцах эрхтэй бөгөөд өөрчлөгдөшгүй тензоруудыг аюулгүй хандалтыг хангахын тулд салангид блокуудад хуваадаг. Cutile-rs кодыг Apache 2.0 лицензийн дагуу түгээдэг.
Эх сурвалж: opennet.ru
