Kompania Nvidia botuar publikimi i parë i paketës së mjeteve CUDA-oksid, e cila ju lejon të krijoni bërthama GPU paralele në gjuhën Rust CUDA SIMT (Udhëzim i vetëm, Fije të shumëfishta). Projekti ju lejon të kompiloni kodin Rust duke përdorur sistemin standard të tipit dhe modeli i pronësisë Rust, direkt në udhëzimet për ekzekutim në makinën virtuale CUDA PTX (nvidia.com) (Ekzekutimi Paralel i Thread-eve) pa përdorimin e gjuhëve të ndërmjetme specifike për domenin (DSL) dhe lidhjeve.
Kodi i paketës së mjeteve është shkruar në Rust dhe shperndare nga sipas licencës Apache 2.0. Versioni i parë pozicionohet si një version fillestar alfa.
Seti i mjeteve përfshin:
- NjĂ« backend pĂ«r gjenerimin e kodit pĂ«r kompiluesin rustc qĂ« ju lejon tĂ« kompiloni funksione me "#[bĂ«rthamĂ«]"nĂ« bĂ«rthama paralele GPU nĂ« pĂ«rfaqĂ«simin CUDA PTX. Kompilimi pĂ«rdor zinxhirin standard tĂ« transformimit tĂ« bazuar nĂ« kornizĂ«n rustc. Pliron: Rust â MIR â Pliron IR â LLVM IR â PTX.
- Një sistem i unifikuar për montimin e komponentëve që funksionojnë në sistemin pritës dhe në GPU, i cili reduktohet në ekzekutimin e komandave "cargo oxide build" dhe "cargo oxide run".
- NjĂ« grup abstraksionesh tĂ« Rust qĂ« mund tĂ« pĂ«rdoren nĂ« bĂ«rthamat e anĂ«s GPU-sĂ«. PĂ«r shembull, funksionet janĂ« tĂ« disponueshme pĂ«r indeksimin, pĂ«rdorimin e memories sĂ« pĂ«rbashkĂ«t dhe barrierave, operacionet atomike dhe sinkronizimin e grupit tĂ« fijeve. TMA (nvlabs.github.io) (PĂ«rshpejtuesi i KujtesĂ«s Tensor). ĂshtĂ« e mundur tĂ« thirren lidhjet pĂ«r udhĂ«zime tĂ« nivelit tĂ« ulĂ«t specifike pĂ«r arkitekturĂ«n Blackwell (pĂ«r shembull, operacionet e matricĂ«s sĂ« zgjeruar).
- Vendosni paketa në kuti me komponentë të kohës së ekzekutimit CUDA të bazuar në host që lejojnë menaxhimin e memories, ekzekutimin e bërthamave në GPU dhe bashkëveprimin asinkron me funksionet e bazuara në GPU.
- Një koleksion shembujsh të bërthamës që demonstrojnë karakteristika të tilla si manipulimi i vektorëve, shumëzimi i matricave (GEMM), operacionet atomike, ekzekutimi asinkron dhe integrimi i bibliotekave. MathDx, duke përdorur gjenerikë dhe mbyllje, duke bashkëvepruar me bërthamat CUDA në C++/CCCL.
Bërthamat e GPU-së krijohen në Rust të rregullt (jo në dialekt), por ekzekutohen në mjedis. no_std dhe mund të përdorë vetëm funksione nga biblioteka libcore dhe abstraksionet e specializuara të Rust të përmendura më parë, pa qasje në bibliotekën standarde të Rust (libstd). Llojet e mbështetura përfshijnë lloje primitive (u8..u64, f32, f64, bool), struktura, numërime, tuple, vargje ([T; N]) dhe feta (&[T]), operatorë match / if / if let, sythe for dhe while, iteratorë (.iter(), .enumerate()), mbyllje dhe funksione gjenerike. Nuk mbështeten llojet String, Vec dhe Box, makrot format!, panic! dhe println!, objektet Trait dhe funksionet standarde të bibliotekës të implementuara përmes thirrjeve të sistemit operativ (trajtimi i skedarëve, I/O dhe operacionet e rrjetit).
Në dispozicion Tre nivele të sigurisë së bërthamës CUDA në Rust: mbrojtja e sistemit të tipit (e sigurt), përdorimi i blloqeve të pasigurta dhe qasja në udhëzimet e harduerit të nivelit të ulët. Performanca e implementimit të shumëzimit të matricës bazuar në oksid CUDA (GEMM SoL) në një GPU B200 arrin 868 trilion operacione në sekondë, që është 58% e performancës së bibliotekës së optimizuar. cuBLAS.
Burimi: linux.org.ru
