---
title: "Introducing CUDA Rust: Two Tracks for Writing GPU Kernels"
description: "NVIDIA’s CUDA Rust effort targets the GPU-kernel gap in Rust-based systems, where host code can be Rust but kernels often require another language. It presents two tracks: cuda-oxide compiles #[kernel] functions through Rust MIR, Pliron, and LLVM IR to PTX for SIMT programming, while cutile-rs expresses computations as tiles and JIT-compiles embedded ASTs through CUDA Tile IR. The SIMT example uses DisjointSlice, typed thread indices, and launch contracts to constrain per-thread output access and validate launch configuration; Tile leaves thread mapping and shared-memory management to its compiler. The post recommends starting with Tile because the compiler decides tile mapping per architecture, and using SIMT when explicit thread or memory control is needed. Both projects are early-stage, with cuda-oxide in early alpha and cutile-rs further along but still incomplete and subject to API changes."
---

# Introducing CUDA Rust: Two Tracks for Writing GPU Kernels

[NVIDIA](https://yomu.fyi/company/nvidia-developer-blog) · Elizabeth Goodman · Sep 8, 2026

**Type:** Announcement

## Summary

NVIDIA’s CUDA Rust effort targets the GPU-kernel gap in Rust-based systems, where host code can be Rust but kernels often require another language. It presents two tracks: cuda-oxide compiles #\[kernel\] functions through Rust MIR, Pliron, and LLVM IR to PTX for SIMT programming, while cutile-rs expresses computations as tiles and JIT-compiles embedded ASTs through CUDA Tile IR. The SIMT example uses DisjointSlice, typed thread indices, and launch contracts to constrain per-thread output access and validate launch configuration; Tile leaves thread mapping and shared-memory management to its compiler. The post recommends starting with Tile because the compiler decides tile mapping per architecture, and using SIMT when explicit thread or memory control is needed. Both projects are early-stage, with cuda-oxide in early alpha and cutile-rs further along but still incomplete and subject to API changes.

## Context

Rust can launch GPU kernels, but the kernel itself often has to be written in another language. The work addresses that gap as more systems-layer AI software is written in Rust and seeks compile-time protection for GPU memory access and concurrency.

## Approach / What changed

CUDA Rust offers two Rust-native kernel tracks. cuda-oxide uses a custom rustc codegen backend that routes kernel functions through Rust MIR, Pliron, and LLVM IR to PTX for SIMT execution. cutile-rs embeds a kernel module’s AST and JIT-compiles it through CUDA Tile IR, letting the compiler determine the mapping of tiles to GPU threads.

## Takeaways

- cuda-oxide uses DisjointSlice, typed thread indices, and launch contracts to make per-thread output access and launch configuration checks explicit; its shared-memory path currently requires unsafe code.
- cutile-rs treats each tile block as one logical thread and lets the compiler manage real thread mapping and shared memory, trading away the explicit control available in SIMT programming.
- Both projects are early-stage: cuda-oxide is described as early alpha, while cutile-rs is published and used outside NVIDIA but still has incomplete coverage and moving APIs.

**Tags:** [CUDA](https://yomu.fyi/topic/cuda), [GPU](https://yomu.fyi/topic/gpu), [Rust](https://yomu.fyi/topic/rust)

- Source: [NVIDIA](https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels)
- Source URL: https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels
- Ingested by Yomu: 2026-09-08T16:00:56.436Z

[Read original post](https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels)
