Nvidia vydala CUDA-oxide, kompilátor pro převod z Rust na CUDA.

Společnost Nvidia publikováno první vydání sady nástrojů CUDA-oxid, který umožňuje vytvářet paralelní jádra GPU v jazyce Rust CUDA SIMT (Jedna instrukce, více vláken). Projekt umožňuje kompilovat kód Rust pomocí standardního typového systému a model vlastnictví Rust, přímo v instrukcích pro spuštění ve virtuálním stroji CUDA PTX (nvidia.com) (Paralelní provádění vláken) bez použití zprostředkujících doménově specifických jazyků (DSL) a vazeb.

Kód sady nástrojů je napsán v Rustu a distribuovány pod licencí Apache 2.0. První vydání je prezentováno jako počáteční alfa verze.

Sada nástrojů obsahuje:

  • Backend pro generování kódu pro kompilátor rustc, který umožňuje kompilovat funkce s "#[jádro]" do paralelních jader GPU v reprezentaci CUDA PTX. Kompilace používá standardní transformační řetězec založený na frameworku rustc. Pliron: Rust → MIR → Pliron IR → LLVM IR → PTX.
  • Jednotný systém pro sestavování komponent běžících na hostitelském systému a na GPU, který se redukuje na provádění příkazů „cargo oxide build“ a „cargo oxide run“.
  • Sada abstrakcí Rust, které lze použít v jádrech na straně GPU. K dispozici jsou například funkce pro indexování, využití sdílené paměti a bariér, atomické operace a synchronizaci skupin vláken. TMA (nvlabs.github.io) (Akcelerátor tenzorové paměti). Je možné volat vazby pro nízkoúrovňové instrukce specifické pro architekturu Blackwell (například rozšířené maticové operace).
  • Vytvořte balíčky s hostitelskými běhovými komponentami CUDA, které umožňují správu paměti, spouštění jader na GPU a asynchronní interakci s funkcemi založenými na GPU.
  • Soubor příkladů jádra demonstrujících funkce jako manipulace s vektory, násobení matic (GEMM), atomické operace, asynchronní provádění a integrace knihoven. MathDx, používání generik a uzávěrů, interakce s CUDA jádry v C++/CCCL.

Jádra GPU se vytvářejí v běžném Rustu (ne v dialektu), ale spouštějí se v daném prostředí. no_std a lze používat pouze funkce z knihovny libcore a dříve zmíněné specializované abstrakce Rust, bez přístupu ke standardní knihovně Rust (libstd). Mezi podporované typy patří primitivní typy (u8..u64, f32, f64, bool), struktury, výčty, n-tice, pole ([T; N]) a slices (&[T]), operátory match / if / if let, smyčky for a while, iterátory (.iter(), .enumerate()), uzávěry a generika. Nejsou podporovány typy String, Vec a Box, makra format!, panic! a println!, objekty Trait a funkce standardní knihovny implementované prostřednictvím volání operačního systému (práce se soubory, I/O a síťové operace).

K dispozici Tři úrovně zabezpečení jádra CUDA v Rustu: ochrana typového systému (bezpečné), použití nebezpečných bloků a přístup k nízkoúrovňovým hardwarovým instrukcím. Výkon implementace násobení matic založené na CUDA-oxidu (GEMM SoL) na GPU B200 dosahuje 868 bilionů operací za sekundu, což je 58 % výkonu optimalizované knihovny. cuBLAS.

Zdroj: linux.org.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster