Nvidia has introduced CUDA Rust, an effort to let developers write GPU kernels directly in Rust and compile them natively to PTX. The company is presenting two experimental tracks: a lower-level SIMT approach for developers who need explicit control over threads and memory, and a tile-oriented model that delegates more architecture-specific decisions to the compiler.
The initiative targets a gap in systems stacks that increasingly use Rust for inference engines, serving infrastructure, drivers and runtimes. Rust applications can already launch CUDA kernels, but those kernels commonly must be written in another language. Nvidia says the new projects are intended to make Rust a kernel language in its own right, alongside established CUDA C++ and CUDA Python workflows.
For most new work, Nvidia recommends considering the Tile track first. Its cutile-rs project expresses computations over blocks of data rather than individual scalar threads. A macro captures the kernel representation in the host program, and the kernel is compiled through CUDA Tile IR when first required. The compiler then chooses how each logical tile maps to GPU hardware, reducing the amount of architecture-specific scheduling encoded in source.
The tile design also uses Rust ownership to structure mutable data. Before launch, an output tensor is partitioned into non-overlapping chunks, giving each tile exclusive write access. The partition determines launch geometry as well as memory ownership. Operations remain a lazy description until synchronization, and the launcher returns ownership of the tensors after GPU work completes.
The SIMT track, called cuda-oxide, is closer to the programming model familiar to CUDA C++ developers. It uses a custom Rust compiler backend that sends functions marked as kernels through Rust’s intermediate representation, the Pliron framework and LLVM before producing PTX. Host and device code can live in one file and build through a Cargo subcommand.
Nvidia’s example uses dedicated types to make common errors more visible. A disjoint slice gives each GPU thread exclusive access to its output element, while a one-dimensional index type and an optional return value force handling of out-of-bounds accesses. A launch contract can describe the expected block layout, allowing configuration to be checked against the kernel declaration and the active device. Kernels without such a contract retain an explicitly unsafe launch path.
Both tracks currently have substantial platform requirements. Nvidia says they need Linux and a GPU with compute capability 8.0 or later. cuda-oxide additionally uses a pinned nightly Rust toolchain, CUDA 12 or newer and Clang components. cutile-rs uses stable Rust 1.89 or newer but requires CUDA 13.3.
CUDA Rust is not presented as replacing Nvidia’s mature toolchains. The company says it plans to develop the Rust work through 2027 and beyond and intends to support interoperability between languages. For developers, the immediate release is an early technical foundation: Tile offers portability through compiler-managed mapping, while SIMT preserves detailed control when performance work demands it.



