|
09.09.2026
13:55 Uhr
|
GPU-Kernel ließen sich bislang aus Rust starten, aber man konnte damit nicht schreiben. Nvidia schließt diese Lücke nun mit CUDA Rust.

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.
Das im frühen Alpha-Stadium steckende Projekt cuda-oxide nutzt das von CUDA C++ und numba-cuda bekannte SIMT-Modell (Single Instruction, Multiple Threads), 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.
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. Das benötigte LLVM bringt die Toolchain mit, alternativ lässt sich eine im System installierte Version ab LLVM 21 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 und läuft mit einem stabilen Rust ab Version 1.89 und CUDA 13.3.
(mro)