NVIDIA introduserte CUDA Rust for utvikling av GPU-kjerner i Rust-språket.

NVIDIA annonserte utviklingen av CUDA Rust-verktøysettet, som lar Rust-språket utvikle kjerner som kjører på GPU-en. Verktøysettet sikrer minnesikkerhet ved kompileringstid og forhindrer kappløpsforhold. Neste år er det planlagt at CUDA Rust skal utvikles til et nivå som er egnet for produksjonsprosjekter, i likhet med CUDA C++ og CUDA Python-verktøysettene.

CUDA Rust-verktøykjeden støtter to modeller for utvikling av parallelle kjerner: SIMT (Single Instruction, Multiple Threads) og Tile. SIMT-modellen tillater lavnivådefinisjon av en enkelt tråd, lansering og administrasjon av tusenvis av slike tråder. Tile-modellen tilbyr et høyere abstraksjonsnivå, der i stedet for eksplisitt å administrere individuelle tråder, defineres algoritmer for å operere på datablokker (tiler), og Tile IR-kompilatoren håndterer all trådmanipulering, tilgangssynkronisering, minneadministrasjon og datadistribusjon på tvers av tensorkjerner.

For utvikling i Rust-språket ved bruk av SIMT-modellen utvikles cuda-oxide-kompilatoren, som tillater kompilering av kode i Rust-språket, ved bruk av standardtypesystemet og Rust-eierskapsmodellen, direkte til instruksjoner for utførelse i virtuell maskin CUDA PTX (Parallel Thread Execution). GPU-kjerner er skrevet i vanlig Rust, men kjører i et no_std-miljø og kan bare bruke funksjoner fra libcore-biblioteket og spesialiserte Rust-abstraksjoner, uten tilgang til standard Rust-biblioteket (libstd).

CUDA-kjerner skrevet i Rust tillater bruk av typebeskyttelse (sikker), bruk av usikre blokker og tilgang til lavnivå maskinvareinstruksjoner. For å sikre sikkerhet foreslås typen DisjointSlice, som sikrer at hver tråd har eksklusiv tilgang til kun sine egne data. CUDA-oxide-koden er lisensiert under Apache 2.0-lisensen.

For å implementere Tail-modellen foreslås cutile-rs-biblioteket. Det muliggjør bruk av det idiomatiske språket Rust for å lage kode som kompilerer direkte til CUDA-kjerner. Cutile-rs anvender Rusts strenge eierskaps- og låneregler på kode som kjører på GPU-en. Kjernen implementeres som et enkelttrådet program som opererer på en datablokk, og kompilatoren deler automatisk beregningen inn i tråder og sikrer synkronisering av dem. Trådene gis delt tilgang til uforanderlige tensorer, og muterbare tensorer er partisjonert i disjunkte blokker for å sikre sikker tilgang. Cutile-rs-koden distribueres under Apache 2.0-lisensen.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster