Pausahaan Nvidia diterbitkeun rilis munggaran tina toolkit CUDA-oksida, anu ngamungkinkeun anjeun pikeun nyieun kernel GPU paralel dina basa Rust CUDA SIMT (Instruksi Tunggal, Sababaraha Utas). Proyék ieu ngamungkinkeun anjeun pikeun ngompilasi kode Rust nganggo sistem tipe standar sareng modél kapamilikan Karat, langsung dina parentah pikeun palaksanaan dina mesin virtual CUDA PTX (nvidia.com) (Pangatur Utas Paralel) tanpa nganggo basa spésifik domain panengah (DSL) sareng pangiket.
Kode toolkit ditulis dina Rust sareng disebarkeun ku dina lisénsi Apache 2.0. Rilis munggaran diposisikan salaku vérsi alfa awal.
Pakakas pakakasna ngawengku:
- Backend generasi kode pikeun kompiler rustc anu ngamungkinkeun anjeun pikeun ngompilasi fungsi nganggo "#[kernel]" kana kernel GPU paralel dina representasi CUDA PTX. Kompilasi ngagunakeun ranté transformasi berbasis kerangka rustc standar. Pliron: Karat → MIR → Pliron IR → LLVM IR → PTX.
- Sistem anu ngahijikeun pikeun ngarakit komponén anu dijalankeun dina sistem host sareng dina GPU, anu inti na nyaéta ngajalankeun paréntah "cargo oxide build" sareng "cargo oxide run".
- Sakumpulan abstraksi Rust anu tiasa dianggo dina kernel sisi GPU. Salaku conto, fungsi sayogi pikeun indéks, panggunaan mémori sareng panghalang anu dibagikeun, operasi atom, sareng sinkronisasi grup utas. TMA (nvlabs.github.io) (Tensor Memory Accelerator). Bisa disebut bindings pikeun instruksi tingkat handap anu khusus pikeun arsitéktur Blackwell (contona, operasi matriks anu diperpanjang).
- Paket peti kalayan komponén runtime CUDA berbasis host anu ngamungkinkeun manajemen memori, ngajalankeun kernel dina GPU, sareng berinteraksi sareng fungsi berbasis GPU sacara asinkron.
- Kumpulan conto kernel anu nunjukkeun fitur-fitur sapertos manipulasi véktor, perkalian matriks (GEMM), operasi atomik, palaksanaan asinkron, sareng integrasi pustaka. MathDx, ngagunakeun generik sareng panutupan, berinteraksi sareng inti CUDA dina C++/CCCL.
Kernel GPU didamel dina Rust biasa (sanés dialek), tapi dieksekusi dina lingkungan éta. no_std sareng ngan ukur tiasa nganggo fungsi tina perpustakaan libcore sareng abstraksi Rust khusus anu parantos disebatkeun sateuacanna, tanpa aksés ka perpustakaan standar Rust (libstd). Jenis anu dirojong kalebet jenis primitif (u8..u64, f32, f64, bool), struktur, enumerasi, tuple, array ([T; N]) sareng slices (&[T]), operator match / if / if let, for sareng while loop, iterator (.iter(), .enumerate()), closures, sareng generics. Anu henteu dirojong nyaéta jenis String, Vec, sareng Box, format!, panic!, sareng println! macros, objek Trait, sareng fungsi perpustakaan standar anu diimplementasikeun ngalangkungan panggero sistem operasi (pangaturan file, I/O, sareng operasi jaringan).
R ”РѕіЃЃ‚ѓѓѓѕѕ Tilu tingkat kaamanan inti CUDA dina Rust: panyalindungan sistem tipe (aman), panggunaan blok anu teu aman, sareng aksés kana pitunjuk perangkat keras tingkat handap. Kinerja implementasi multiplikasi matriks berbasis CUDA-oksida (GEMM SoL) dina GPU B200 ngahontal 868 triliun operasi per detik, nyaéta 58% tina kinerja perpustakaan anu dioptimalkeun. cuBLAS.
sumber: linux.org.ru
