Entwicklung & Code
Nvidia CUDA Rust: Native GPU-Kernel in Rust schreiben
CUDA Rust umfasst die Projekte cuda-oxide und cutile-rs, die die CUDA-Modelle SIMT und Tile nach Rust bringen. Produktionsreif ist noch keines der beiden Projekte aus der neuen Toolchain, Nvidia ruft Entwicklerinnen und Entwickler aber ausdrücklich zum Ausprobieren auf.
Weiterlesen nach der Anzeige
Das im frühen Alpha-Stadium steckende Projekt cuda-oxide nutzt das von CUDA C++ und numba-cuda bekannte SIMT-Modell, ist ein eigenes rustc-Codegen-Backend und übersetzt die GPU-Kernel nativ nach PTX. Bei cutile-rs (cuTile Rust) beschreiben Entwickler dagegen Operationen auf Tiles statt auf Skalaren, während der Compiler über Thread-Mapping und Speicherlayout entscheidet.
cuda-oxide und cutile-rs erzwingen jeweils Speichersicherheit zur Compile-Zeit. Während cuda-oxide Aliasing mit DisjointSlice und Launch-Contracts verhindert, garantiert cutile-rs über Tensor-Partitionierung und Ownership dem jeweiligen Tile-Block exklusiven Schreibzugriff.
Nvidia empfiehlt cutile-rs
Rust-Programmierern empfiehlt Nvidia in seinem Blogbeitrag, nur dann zu cuda-oxide zu greifen, wenn sie Threads und Speicher selbst verwalten wollen. Bei cutile-rs braucht es dagegen keine architekturspezifischen Entscheidungen im Quellcode. Für das Tile-Projekt spricht außerdem der höhere Reifegrad. cutile-rs ist bereits auf crates.io veröffentlicht und bei der Inferenz-Engine Grout von Hugging Face sowie bei mistral.rs im Einsatz.
Beide Rust-Projekte setzen neben Linux eine GPU ab Compute Capability 8.0 voraus, cuda-oxide erfordert zusätzlich mindestens CUDA 12.x, clang samt libclang-Headern und eine festgelegte Nightly-Toolchain. Eine vorhandene System-LLVM lässt sich optional verwenden. Wer auf diese Abhängigkeiten verzichten möchte, ist mit cutile-rs besser bedient: Es braucht weder Nightly-Rust noch eine eigene System-LLVM, sondern läuft mit einem stabilen Rust ab Version 1.89 und CUDA 13.3.
Lesen Sie auch
(mro)