Az NVIDIA bejelentette a CUDA Rust eszközfejlesztésének előrehaladását, amely lehetővé teszi a Rust nyelv használatát GPU-úton futó magok fejlesztésére. Az eszköz biztosítja a memóriahasználat biztonságát a fordítási szakaszban, és megelőzi a versenytársak állapotának kialakulását. A következő évben a CUDA Rust-ot olyan szintre tervezik emelni, amely alkalmas munkaprojektek fejlesztésére, hasonlóan a CUDA C++ és CUDA Python eszközökhöz.
A CUDA Rust eszköz két párhuzamosan végrehajtható mag fejlesztési modellt támogat — SIMT (Single Instruction, Multiple Threads) és Tile. A SIMT modell lehetővé teszi, hogy alacsony szinten határozzuk meg az egyetlen szál logikáját, ezer ilyen szálat indítsunk berendezésük és irányításuk alatt. A Tile modell egy magasabb absztrakciós szintet kínál, ahol ahelyett, hogy külön szálak előírásos irányítására összpontosítanánk, az adatblokkok (tile) műveleti algoritmusait határozzuk meg, minden szál kezelését, hozzáférés szinkronizálását, memória menedzsmentet és adatelosztást pedig a Tile IR fordító végzi.
Rust nyelven a SIMT modell használatával történő fejlesztés érdekében a cuda-oxide fordító fejlődik, lehetővé téve Rust nyelven írt kód fordítását, amely a Rust saját típuskezelési rendszere és tulajdonjogi modellje alapján készült, közvetlenül végrehajtható utasításokká. virtuális gépben A CUDA PTX (Parallel Thread Execution) keretein belül a GPU magokat hagyományos Rust használatával hoznak létre, de no_std környezetben futnak, és csak a libcore könyvtár funkcióit és a speciális Rust-absztrakciókat használhatják, a Rust standard könyvtárhoz (libstd) való hozzáférés nélkül.
A Rust-ra írt CUDA magok esetében megengedett a típusokkal történő védelem (safe), az unsafe blokkok használata, valamint a mélyebben fekvő hardver utasításokhoz való hozzáférés. A biztonság érdekében egy DisjointSlice típust javasolnak, amely garantálja, hogy minden szál kizárólagos hozzáférést kap a saját adataihoz. A cuda-oxide kódja Apache 2.0 licenc alatt terjesztett.
A Tail modell alkalmazásához a cutile-rs könyvtárat ajánlják, amely lehetővé teszi a Rust nyelv idiomatikus használatát CUDA-ytartalmak közvetlen fordításához. A cutile-rs a Rust által javasolt szigorú tulajdonjog- és kölcsönzési szabályokat alkalmazza a GPU-n végrehajtott kódra. Az Ytartalom egy egyszálú programként van megformálva, amely egy adathalmazon működik, a fordító pedig automatikusan bontja fel a számításokat szálakra, és biztosítja azok szinkronizálását. A szálak megosztott hozzáférést kapnak a változatlan tenzorokhoz, míg a változó tenzorok biztonságos eléréséhez azok nem átfedő blokkokra vannak osztva. A cutile-rs kódja Apache 2.0 licenc alatt terjesztett.
Forrás: opennet.ru
