← Retour au blog
tech 11 May 2026

CUDA-oxide: Nvidia's Official Rust to CUDA Compiler

Discover CUDA-oxide, Nvidia's new compiler that allows executing GPU kernels in safe, idiomatic Rust.

Article inspired by the original source
CUDA-oxide: Nvidia's official Rust to CUDA compiler ↗ nvlabs.github.io

Introduction

In the ever-evolving world of software development, code efficiency and safety are crucial. Nvidia, a leader in the GPU industry, has recently introduced CUDA-oxide, a revolutionary compiler that allows developers to write GPU kernels in Rust, a language known for its safety and performance. This article explores how CUDA-oxide is a game-changer for developers.

Why Rust and CUDA?

Rust is praised for its secure memory management and performance, while CUDA is the standard for parallel computing on GPUs. The combination of the two via CUDA-oxide allows leveraging the best of both worlds: Rust's safety and CUDA's computational power.

Features and Benefits

CUDA-oxide compiles Rust code directly into PTX (Parallel Thread Execution), eliminating the need for specialized languages or foreign bindings. This process makes development smoother and reduces potential errors.

Simplicity and Safety

The Rust-to-CUDA compiler makes writing GPU kernels as simple as writing standard Rust code. Developers can thus focus on optimization and innovation rather than managing low-level complexities.

Integration with the Rust Ecosystem

CUDA-oxide integrates seamlessly with the existing Rust ecosystem, allowing the use of traits, generics, and asynchronous programming. This offers incredible flexibility for building complex GPU applications.

Concrete Examples

Take the example of vector addition, a basic yet crucial operation in parallel computing. With CUDA-oxide, a developer can write a Rust kernel that adds two floating-point vectors, using clear and concise syntax.

```rust use cuda_device::{cuda_module, kernel, thread, DisjointSlice}; use cuda_core::{CudaContext, DeviceBuffer, LaunchConfig};

#[cuda_module] mod kernels { use super::; #[kernel] fn vecadd(a: &[f32], b: &[f32], mut c: DisjointSlice<f32>) { let idx = thread::index_1d(); let i = idx.get(); if let Some(c_elem) = c.get_mut(idx) { c_elem = a[i] + b[i]; } } }

fn main() { let ctx = CudaContext::new(0).unwrap(); let stream = ctx.default_stream(); let module = kernels::load(&ctx).unwrap(); let a = DeviceBuffer::from_host(&stream, &[1.0f32; 1024]).unwrap(); let b = DeviceBuffer::from_host(&stream, &[2.0f32; 1024]).unwrap(); let mut c = DeviceBuffer::<f32>::zeroed(&stream, 1024).unwrap(); module .vecadd(&stream, LaunchConfig::for_num_elems(1024), &a, &b, &mut c) .unwrap(); let result = c.to_host_vec(&stream).unwrap(); assert_eq!(result[0], 3.0); } ```

Project Development

Currently, CUDA-oxide is in alpha version (v0.1.0), and while it is functional, it is still under active development. Nvidia invites developers to try the tool and contribute feedback.

Conclusion

CUDA-oxide represents a significant advancement for the integration of Rust into GPU development. By leveraging Rust's safety and performance combined with CUDA's power, Nvidia provides developers with a powerful tool for the future of parallel computing.

Let's discuss your project in 15 minutes.

CUDA-oxide Nvidia Rust GPU Compiler
Deepthix newsletter · 100% AI · every Monday 8am

An AI agent reads tech for you.

Our AI agent scans ~200 sources per week and ships the best articles to your inbox Monday 8am. Free. One click to unsubscribe.

Visit the newsletter page →

Want to automate your operations?

Let's talk about your project in 15 minutes.

Book a call