NVIDIA Launches Native CUDA Rust Toolchains for GPU Kernel Development
NVIDIA announced native Rust support for GPU programming through two tracks: cuda-oxide for SIMT kernels and cutile-rs for tile-level programming. Developers can now author high-performance kernels with compile-time memory guarantees directly in Rust.

Impact: High
Why it matters
You can now write GPU kernels natively in Rust without C++ wrapper boilerplate while enforcing compile-time memory safety across thread blocks.
TL;DR
- 01cutile-rs works on stable Rust 1.89+ with CUDA 13.3 for high-level tile programming.
- 02cuda-oxide compiles SIMT Rust kernels to PTX via Pliron IR and nightly rustc.
- 03DisjointSlice and launch contracts eliminate data races and invalid launch bounds at compile time.
Key facts
- cutile-rs requirements
- Stable Rust 1.89+, CUDA 13.3
- cuda-oxide requirements
- Compute capability 8.0+, CUDA 12.x+, pinned nightly toolchain
- Ecosystem adoption
- crates.io, HuggingFace Grout, mistral.rs
Two Tracks: SIMT vs Tile
NVIDIA's CUDA Rust release offers two distinct development paradigms:
1. cuda-oxide (SIMT Track): A custom rustc codegen backend that compiles single-instruction multiple-thread kernels straight to PTX. It uses the Pliron intermediate representation and LLVM. It requires Linux, a GPU with compute capability 8.0 or newer, CUDA 12.x+, and a pinned nightly toolchain. 2. cutile-rs (Tile Track): Available directly on crates.io, this library runs on stable Rust 1.89+ and CUDA 13.3 without custom LLVM dependencies. The compiler automatically maps tiles onto the target GPU architecture.
Compile-Time Memory Guarantees
Writing device code in Rust solves aliasing issues through new types. Rather than passing &mut [f32], which the compiler rejects across parallel threads, cuda-oxide introduces DisjointSlice<T>. This structure guarantees each thread exclusive access to its indexed element. Kernels define execution bounds using #[launch_contract], which validates launch configurations before runtime dispatch.
Getting Started
Install the cargo subcommand for cuda-oxide:
cargo +nightly-2026-04-03 install --git https://github.com/NVlabs/cuda-oxide.git cargo-oxideTo verify local environment prerequisites including system LLVM and driver compatibility, execute cargo oxide doctor.
Try it in 2 minutes
cargo +nightly-2026-04-03 install --git https://github.com/NVlabs/cuda-oxide.git cargo-oxide
cargo oxide doctorbash
✓ When to use
- When building low-latency AI inference runtimes and custom attention kernels in pure Rust.
- When you want compile-time guarantees preventing out-of-bounds GPU memory accesses across blocks.
✕ When NOT to use
- Do not use cuda-oxide in production pipelines requiring stable, non-pinned Rust compilers.
- Avoid for legacy NVIDIA GPUs with compute capability below 8.0 (Ampere).
What to do today
- Run cargo oxide doctor on your Linux GPU instance to verify compute capability and CUDA 12+ toolchains.
- Evaluate cutile-rs from crates.io if your AI inference stack runs on stable Rust 1.89+.
- Replace raw FFI kernel bindings in inference pipelines with DisjointSlice-validated Rust kernels.
Sources