mrkeyoor.com_
Fri 11 Sept 18:03 UTC
Dev Toolsevaluationupdated 11 Sept 2026

cuda-oxide review

cuda-oxide is a compiler and runtime for writing NVIDIA GPU kernels in Rust, in the same source files as the host program. It turns those kernels into CUDA PTX and gives Rust code typed tools for memory, launches, synchronization, and asynchronous GPU work.

trackingstars / 7d
Verdict

Our cuda-oxide install added 173 packages in 91 seconds, but both build and test stopped because the sandbox had no CUDA 13.0+ toolkit. Try it if your team already owns the required NVIDIA stack and specifically wants Rust kernels with CUDA semantics. Keep it out of a stability-sensitive production path until its alpha APIs and compiler edge cases fit your tolerance for churn.

We ran it

Lab card: what happened when we ran cuda-oxideScreenshot of cuda-oxide (nvlabs.github.io/cuda-oxide)
Install✓ · 91s173 packages
Build✗ · 109s
Tests✗ · 101sran, no count parsed
Repo3377 files~788,923 lines of source · 65.5 MB · 11 CI workflows

Answers from our run

Does cuda-oxide build from source?

Dependencies installed in 91 seconds (173 packages), and the build failed. We cloned commit 6abfaa0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cuda-oxide's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use cuda-oxide?

Windows or macOS developers: the installation guide says cuda-oxide currently targets Linux only.

What are the alternatives to cuda-oxide?

Rust-CUDA, CubeCL, wgpu. Our cuda-oxide install added 173 packages in 91 seconds, but both build and test stopped because the sandbox had no CUDA 13.

Setup1/5CUDA 13.0+, driver 580+, LLVM, Clang, and nightly Rust required
Docs5/5Setup, compiler stages, examples, and hardware limits are specific
Community4/53,263 stars and issue activity through September 2026
Maturity2/5The README calls it alpha and warns of API breakage

Who it’s for

Rust teams committed to NVIDIA GPUs that want host and kernel code in one language.
Compiler engineers who can work with a pinned nightly toolchain and inspect generated PTX.
CUDA developers targeting Ampere or newer hardware who want typed memory and launch APIs.
Researchers willing to absorb alpha-stage API changes while contributing fixes and examples.

Who it’s NOT for

Windows or macOS developers: the installation guide says cuda-oxide currently targets Linux only.
Teams on CUDA 12.x or older drivers: the README requires CUDA Toolkit 13.0+ and an R580+ driver.
AMD, Intel, or portable-GPU projects: cuda-oxide emits NVIDIA PTX, while its own ecosystem guide points cross-vendor users toward CubeCL or wgpu.
Production teams that require stable APIs: the README labels the project alpha and explicitly warns about bugs, incomplete features, and breaking changes.
Developers seeking a hardware-free Cargo build: our build and test commands both stopped when no CUDA 13.0+ toolkit was present.

Setup reality

Our sandbox install succeeded in 91 seconds and added 173 packages. The build failed with exit 101 after 109 seconds, and tests failed with exit 101 after 101 seconds. Both logs said neither CUDA_TOOLKIT_PATH nor CUDA_HOME was set and no CUDA 13.0+ toolkit existed in the checked default locations.

No hosted credential is required. A usable setup needs Linux, the pinned Rust nightly and components, CUDA Toolkit 13.0+, Clang 21+, LLVM 21+ with NVPTX, plus NVIDIA driver 580 or newer. Running kernels also needs an Ampere-class or newer NVIDIA GPU.

The devcontainer and Nix shell package much of the compiler stack, but the host still supplies a compatible GPU and driver. The README distinguishes compiling from running: GPU access is needed for execution, while toolkit headers are required by the host bindings during the build we attempted.

cuda-oxide compiles Rust kernels into NVIDIA PTX

cuda-oxide is a 65.5 MB Rust workspace that keeps CPU and GPU code in the same source file. A #[kernel] function is compiled through Rust MIR, the project's Pliron-based intermediate representation, LLVM IR, and finally PTX. The host side gets generated, typed launch methods instead of manually loading a string of kernel arguments. That makes it attractive to Rust teams that want CUDA's thread, warp, shared-memory, barrier, atomic, and cluster concepts without maintaining a separate CUDA C++ codebase.

The project includes more than 190 examples, ranging from vector addition and generics to tensor-memory operations, device FFI, and asynchronous pipelines. cargo oxide inspect prints PTX, pipeline exposes the compiler stages, sanitize invokes NVIDIA Compute Sanitizer, and debug opens cuda-gdb. These tools support day-to-day compiler work beyond the bundled demos. The cuda-oxide README also explains which launch calls remain unsafe and how a launch contract can produce a checked API.

CUDA 13.0+ and Linux are the entry price

The documented baseline is Linux, an Ampere-class or newer NVIDIA GPU, driver 580+, CUDA Toolkit 13.0+, Clang 21+, LLVM 21+, and a pinned Rust nightly. Ubuntu 24.04 is the tested distribution. Windows is unsupported. The toolkit must expose cuda.h and curand.h, while LLVM needs its NVPTX backend. This is a specialist compiler environment, so a developer with a working Rust installation still has several system layers to align before the first kernel runs.

The installation guide gives three routes: manual packages, a devcontainer, or a Nix shell. The latter two assemble CUDA 13, Clang, LLVM, and the nightly compiler, but neither can supply a suitable host driver or GPU. cargo oxide doctor checks the chain and reports missing headers, compiler components, driver access, and backend state. That diagnostic command is useful because toolkit and driver compatibility can fail at different stages.

What happened when we ran it

Our sandbox installed 173 packages in 91 seconds. The checkout contained 3,377 files, roughly 788,923 source lines, and used 65.5 MB before those dependencies. We ran commit 6abfaa0 in an unprivileged Debian container with 3 CPUs and 12 GB of RAM, following our testing method. The repository scan found 11 CI workflow files, no Dockerfile, and no top-level tests directory.

The build exited with code 101 after 109 seconds. Its final diagnostic said neither CUDA_TOOLKIT_PATH nor CUDA_HOME was set, and it checked /usr/local/cuda-13.3, /usr/local/cuda-13.2, /usr/local/cuda-13, and /usr/local/cuda without finding a CUDA 13.0+ toolkit. The test command ended with the same exit code after 101 seconds and the same prerequisite message. The logs do not show a later compiler or test assertion failure because configuration stopped both commands first.

That result does not tell us whether the Rust-to-PTX pipeline produces correct kernels on supported hardware. It does establish that a fresh Debian environment cannot build this checkout after Cargo dependencies alone. The README documents the missing requirement clearly, and its devcontainer gives users a packaged route, yet teams still need the matching NVIDIA host layer. Our run establishes setup behavior only; it says nothing about GPU performance.

Typed launches reduce mistakes, while raw geometry remains unsafe

The quick-start kernel uses Rust generics and a closure capturing a scalar, then exposes a typed host method after compilation. Device buffers, pinned transfers, streams, scoped atomics, barriers, and asynchronous DeviceOperation values live in the associated runtime crates. For 1-dimensional work, LaunchConfig::for_num_elems expresses the thread count directly. The generated method checks argument types, which removes a class of hand-packed launch errors common in lower-level CUDA loading code.

Launch dimensions and resource choices are still the caller's responsibility unless the kernel has a launch contract. The README marks the raw launch unsafe because the compiler cannot prove that its dimensions match the kernel's indexing assumptions. That is a fair boundary, but the phrase "safe Rust" needs that footnote. Open issue 883 on pointer casts is labeled as a bug and possible miscompile, another reason to test generated code against known outputs on every target architecture.

Alpha status matters more than the v0.2.1 tag

GitHub recorded 3,263 stars, 50 open issues and pull requests, and a last push on September 11, 2026. The true open-issue search returned 37 issues, while current items were being updated through September 10. That combination shows active work and active fault discovery. It also matches the README's alpha warning: users should expect incomplete features, bugs, and API changes rather than treating the NVIDIA organization name as a stability guarantee.

The latest release is v0.2.1 from June 10, 2026, but repository work continued into September. Its notes describe fixes for convergent device calls, architecture selection, NaN literals, and Rust ABI alignment. Those are compiler-correctness details with real consequences. Current full-debug lowering issue 1219 documents another narrow failure mode. The issue discussion is specific and recent, which is healthy, though it also shows how many code-generation paths still need scrutiny.

CubeCL is the clearer choice for cross-vendor work

A 788,923-line compiler tied to CUDA 13.0+ makes sense only when NVIDIA semantics are the goal. The project's own Rust GPU comparison names Rust-CUDA as its closest neighbor, with a more Rust-first device model. CubeCL trades full Rust language coverage for a controlled DSL that can target CUDA, ROCm, and WGPU. wgpu sits farther away, using WGSL and WebGPU for portable compute and graphics.

Choose cuda-oxide when a Rust team wants direct access to CUDA's SIMT model and can test on the exact GPU generations it ships. The 173-package install is manageable; the harder commitment is the compiler, toolkit, driver, and hardware matrix. For a cross-vendor product, a stable production service, or a developer fleet split across Windows and macOS, that commitment overwhelms the benefit of keeping kernels in ordinary Rust files.

Alternatives

ProjectWhat it isPick it when
Rust-CUDAA Rust GPU ecosystem that also compiles device code for NVIDIA hardware.pick this instead when Rust-first device abstractions matter more than closely expressing CUDA's programming model.
CubeCLA Rust compute language and runtime spanning CUDA, ROCm, and WGPU backends.pick this instead when one kernel must run across NVIDIA, AMD, and WebGPU targets.
wgpu gh↗A portable Rust implementation of WebGPU for graphics and compute workloads.pick this instead when portability and WGSL are acceptable and CUDA-specific operations are unnecessary.

What people are saying

  1. [github-trending] NVlabs/cuda-oxide

Sources

  1. NVlabs/cuda-oxide repository
  2. cuda-oxide README
  3. cuda-oxide installation guide
  4. cuda-oxide Rust GPU ecosystem comparison
  5. cuda-oxide v0.2.1 release
  6. Pointer-cast miscompile issue 883
  7. Full-debug lowering issue 1219

More dev tools reviews

iloader · BetterDisplay · json · HardBreacher · markdown-it · carbon-lang · the whole board →