NVIDIA Announces CUDA Rust with cuda-oxide and cutile-rs for Compile-Time-Safe GPU Kernels
NVIDIA announced CUDA Rust, a pair of NVlabs compiler projects that bring compile-time-safe GPU kernels to Rust.
The two projects follow CUDA’s existing programming models. cuda-oxide implements the SIMT (single instruction, multiple threads) model, in which a developer writes what a single thread does and launches thousands of threads. cutile-rs implements the newer Tile model, in which a developer writes what a tile of data does and the Tile IR compiler handles thread mapping and memory layout. NVIDIA recommends Tile first, while SIMT remains available for explicit thread and memory control.
Their deployment status differs. cutile-rs is published on crates.io, works on stable Rust 1.89 or newer, and requires CUDA 13.3 and a GPU with compute capability 8.0 or later on Linux. It is already used in Hugging Face’s Grout inference engine and in mistral.rs. cuda-oxide is in early alpha and requires a pinned nightly toolchain, CUDA 12.x or newer, clang with libclang, and a GPU with compute capability 8.0 or later on Linux. Both projects are in alpha and are not confirmed for production, the report said.
CUDA Rust arrives as NVIDIA’s AI infrastructure increasingly uses Rust. NVIDIA’s Nova Linux driver is in Rust, NVIDIA Dynamo has a Rust core, and NVTX has Rust bindings; GPU kernel code was the remaining exception. cuda-oxide is a custom rustc codegen backend that routes kernel functions through Rust MIR, the Pliron IR framework, and LLVM IR before generating PTX. cutile-rs embeds the kernel’s abstract syntax tree in the host binary using a macro, then JIT-compiles it through CUDA Tile IR when the kernel is launched.
The two tracks enforce safety differently. In the SIMT track, passing the kernel’s output buffer as one of its own inputs is rejected at launch time by the borrow checker. In the Tile track, ownership follows tensors across the launch boundary, which NVIDIA calls the stronger guarantee. Tile does not expose shared memory or thread indexing that can be misused, while shared memory in cuda-oxide currently requires unsafe code.
Developer tooling is included: cargo oxide doctor checks the setup and cargo oxide new scaffolds a vector addition program with host and device code in one file. NVIDIA also plans inter-language interoperability, so Rust code will not lock developers out of C++ or Python.