NVIDIA Ships CUDA Rust with cuda-oxide and cutile-rs for Compile-Time-Safe GPU Kernels
NVIDIA opened CUDA Rust with two NVlabs projects—cuda-oxide for SIMT kernels and cutile-rs for Tile kernels—so Rust can compile natively to PTX and catch buffer aliasing at compile time, with cutile-rs already used in Hugging Face Grout and mistral.rs.
NVIDIA announced CUDA Rust on September 8, 2026, closing the gap between Rust systems code and GPU kernels with two open NVlabs projects: cuda-oxide for the classic SIMT model and cutile-rs for the newer Tile model. Both compile Rust kernels natively and lean on Rust ownership to reject aliasing bugs before launch. Marktechpost covered the same dual-track release the same day.
The systems layer of AI—inference engines, drivers, and agent runtimes—is increasingly written in Rust. NVIDIA cites its Nova Linux driver, a Rust core in Dynamo, and NVTX Rust bindings as part of that shift. Until now, Rust could launch CUDA kernels, but the kernel body often still lived in another language. CUDA Rust is meant to write that body in Rust and emit PTX without a foreign kernel wrapper.
Two tracks that mirror CUDA itself
NVIDIA maps the projects onto CUDA’s existing programming models. SIMT describes what one thread does and launches thousands of them; Tile describes what one tile of data does and leaves thread mapping and memory layout to CUDA Tile IR. The company recommends Tile first and SIMT when developers need explicit thread and memory control. Planned inter-language interop is intended so choosing Rust does not lock teams out of CUDA C++ or CUDA Python.
cuda-oxide is a custom rustc codegen backend. It routes #[kernel] functions through Rust MIR, the community Pliron IR framework, and LLVM IR down to PTX, then hands host code to the standard backend. Requirements include Linux, compute capability 8.0 or later, CUDA 12.x or newer, clang/libclang, and a pinned nightly toolchain (nightly-2026-04-03). cargo oxide doctor checks the toolchain, and cargo oxide new scaffolds a one-file vector-addition demo.
cutile-rs sits one level higher. The #[cutile::module] macro embeds the kernel AST in the host binary and JIT-compiles through CUDA Tile IR on first launch. Requirements are lighter: compute capability 8.0+, CUDA 13.3, stable Rust 1.89+, and Linux, with no nightly and no custom LLVM. Setup is cargo add cutile. Host-side .partition([128]) gives each tile exclusive ownership of its chunk, fixes the grid, and supplies the tile width. Nothing runs until .sync_on(&stream).
Safety and maturity
Both tracks reject the classic aliasing mistake of passing an output buffer as one of its own inputs. cuda-oxide fails with a borrow-checker error on the launch call; cutile-rs fails when ownership of a moved tensor is reused across the launch boundary. NVIDIA calls the Tile ownership story the stronger of the two. Tile exposes no shared memory or thread indexing to misuse; SIMT keeps that control, but shared memory in cuda-oxide still requires unsafe today.
Both projects are early-stage and not production-ready. cuda-oxide is early alpha. cutile-rs is further along, published on crates.io, and already used outside NVIDIA in Hugging Face’s Grout inference engine and in mistral.rs. Primary sources for this brief are NVIDIA’s September 8 CUDA Rust technical blog and Marktechpost’s same-day write-up, with project repos at github.com/NVlabs/cuda-oxide and github.com/NVlabs/cutile-rs.
- #Opensource
- #AI Infrastructure
- #Products
Author
Raj M
Contributor
AI Systems Architect is a seasoned technology leader with over 15 years of experience in the IT industry working with Fortune 500 companies. With a solid foundation in multi-agent systems, open-source LLM infrastructure, and enterprise deployment, he excels at building scalable production-grade AI platforms.