mrkeyoor.com_
Sat 24 Oct 05:23 UTC
Dev Toolsevaluationupdated 24 Oct 2026

cuda-rust review

cuda-oxide is a custom Rust compiler backend for compiling GPU kernels into CUDA PTX, with host and device code in the same source file. It is part of NVIDIA's CUDA Rust repository and exposes explicit control over GPU threads, shared memory and synchronization.

+44stars / 7d
Verdict

The repository-level build and test attempts failed after 33 and 20 seconds because no CUDA 13.0+ toolkit was found. Their component scope is unverified, so these are not cuda-oxide-specific failure results. Evaluate cuda-oxide when Rust-authored SIMT kernels justify its documented development stack and alpha API risks. Start with the prerequisite check on your intended machine; this run establishes no GPU correctness or performance result.

We ran it

Lab card: what happened when we ran cuda-rustScreenshot of cuda-rust (nvidia.github.io/cuda-rust)
Install✓ · 9s56 packages
Build✗ · 33s
Tests✗ · 20sran, no count parsed
Repo4240 files~1,003,452 lines of source · 79.1 MB · 13 CI workflows

Answers from our run

Does cuda-rust build from source?

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

Do cuda-rust's tests pass?

No. The project's own test command exited unsuccessfully after 20 seconds, and its output did not expose an individual test count.

Who should not use cuda-rust?

Developers expecting Cargo dependencies alone to supply the required CUDA development stack.

What are the alternatives to cuda-rust?

cudarc, Triton. The repository-level build and test attempts failed after 33 and 20 seconds because no CUDA 13.

SetupN/AThe repository-level attempts stopped without a toolkit, and their component scope is unverified; supported cuda-oxide setup was not established.
DocsN/AThe README provides prerequisites and diagnostics, but the supplied run does not establish their sufficiency or usability for a successful cuda-oxide setup.
CommunityN/AThe supplied repository activity sample does not establish support responsiveness or the experience of obtaining help with cuda-oxide.
MaturityN/AThe alpha warning is documented, but the blocked repository-level attempts do not establish cuda-oxide runtime reliability or kernel correctness.

Discussed on

  1. hnCUDA-oxide: Nvidia's official Rust to CUDA compiler424 points
  2. hnCUDA-oxide an experimental Rust-to-CUDA compiler7 points
  3. hnNvidia introduces back end for CUDA kernels in Rust3 points
  4. hncuda-oxide: a custom rustc backend for compiling GPU kernels in pure Rust3 points

Who it’s for

Rust developers who understand CUDA threads and blocks and want to write device kernels in Rust.
GPU specialists who need explicit synchronization, shared-memory or warp-level control.
Teams able to provide the documented Linux CUDA development environment and evaluate an alpha compiler.

Who it’s NOT for

Developers expecting Cargo dependencies alone to supply the required CUDA development stack.
Teams that require stable APIs: the README warns about alpha-stage bugs, incomplete features and API breakage.
Developers expecting typed launches to remove responsibility for raw launch dimensions and resources.
Tensor programmers who want the compiler to handle scheduling details: the separate cutile-rs model addresses that programming style.

Setup reality

The sandbox recorded a successful repository-level install step at commit e84e5b3 in 9 seconds, with 56 dependencies recorded. The repository-level build attempt failed with exit 101 after 33 seconds; the test attempt failed with exit 101 after 20 seconds. Both logs reported that CUDA_TOOLKIT_PATH and CUDA_HOME were unset and no CUDA 13.0+ toolkit was found in the checked default locations.

The supplied record does not include the executed commands or selected manifests and packages. It records an empty subdirectory, so the component scope is unverified. These results cannot be attributed specifically to cuda-oxide. The CUTILE_SETUP_DIAGNOSTICS log entry does not resolve that scope.

The current cuda-oxide README requires Linux, a pinned Rust toolchain with compiler components, CUDA toolkit and driver support, and Clang development headers. It documents cargo oxide doctor as a prerequisite check. These are current documentation requirements, not versions established for the measured commit.

The run used 3 CPUs, 12 GB RAM and image label lab-rust:1. That label does not establish actual runtime or operating-system versions. Neither attempt established GPU execution or kernel correctness.

Rust kernels require a CUDA development stack

cuda-oxide compiles Rust GPU kernels into CUDA PTX while keeping host and device code in the same source file. Consider it when writing kernels in Rust and controlling CUDA threads are specific requirements. Its documented setup extends beyond a Rust compiler.

The supplied repository-level build attempt stopped after 33 seconds because no CUDA 13.0+ toolkit was found. The record does not identify the selected component, so this is not evidence of a cuda-oxide-specific build failure.

CUDA Rust contains cuda-oxide, cutile-rs and a shared host runtime. cuda-oxide uses the SIMT model, with explicit thread and block indexing. cutile-rs works on tensor tiles and lets the compiler decide how those tiles map onto the architecture. The repository says kernels from both models can share streams and device buffers.

What happened when we ran it

The sandbox run on 2026-10-17 used repository commit e84e5b3. Its install step succeeded in 9 seconds and recorded 56 dependencies. The build attempt failed with exit 101 after 33 seconds. The test attempt failed with exit 101 after 20 seconds.

Both failing logs reported that neither CUDA_TOOLKIT_PATH nor CUDA_HOME was set and that no CUDA 13.0+ toolkit was found in the checked locations under /usr/local and /opt. They asked for one of those variables to point to a CUDA 13.0+ toolkit directory. This supports the missing-toolkit diagnosis for these attempts.

The harness records an empty subdirectory and omits the commands and selected manifests or packages. The component scope remains unverified. The CUTILE_SETUP_DIAGNOSTICS entry in the logs does not identify which component was selected. Neither failure should be assigned specifically to cuda-oxide or cutile-rs.

The recorded sandbox configuration was 3 CPUs, 12 GB RAM and image label lab-rust:1. It does not establish the actual Rust or operating-system version. The attempts stopped at the toolkit prerequisite, leaving GPU execution, kernel correctness and performance unassessed. The supplied record contains no passing-test count.

Check the current prerequisites on your intended machine

The current cuda-oxide README lists Linux, a pinned Rust toolchain with compiler components, CUDA Toolkit 13.0+, a CUDA 13.x driver and Clang development headers. These describe the current documentation, not a verified environment for commit e84e5b3.

The documented next step is cargo oxide doctor. The README then gives cargo oxide run vecadd and cargo oxide sanitize vecadd to run an example and check it with NVIDIA Compute Sanitizer. No successful execution of those commands is established by this review.

Nix and devcontainer setups are also documented. Neither was evaluated in the supplied run. Use the prerequisite check on the intended development machine before judging whether this compiler fits your workflow.

Typed arguments leave raw launch obligations

The CUDA Rust overview says both programming models extend Rust ownership across GPU launches: mutable buffers are partitioned into disjoint pieces, immutable buffers are shared, and launchers retain borrows while GPU work is in flight. These are documented design properties, not results verified by the blocked sandbox attempts.

The cuda-oxide README also states that the caller must prove that raw LaunchConfig dimensions and resources match the kernel. Its quick-start example therefore uses an unsafe launch. Kernels with a launch contract instead use a checked PreparedLaunch through the generated safe method. A typed kernel signature alone does not establish that a raw launch is valid.

The repository's model comparison leaves thread synchronization and shared memory under the cuda-oxide programmer's control. Choose that model when those controls are necessary. Consider cutile-rs when the workload fits tensor computations and you want the compiler to handle scheduling details. This review did not execute either model successfully.

Alpha status limits the recommendation

The cuda-oxide README calls the project alpha and warns about bugs, incomplete features and API breakage. Teams requiring stable compiler and launch APIs should avoid adopting it on that assumption. Teams evaluating Rust-authored SIMT kernels should check their own outputs on the intended hardware and account for API changes before relying on it.

The README provides concrete prerequisites, diagnostic commands and an explanation of unsafe launch responsibilities. Its linked book is marked work in progress. Those are useful documentation features, but the supplied run does not establish whether the instructions are sufficient for a successful setup. Documentation usability, supported-environment setup ease, support responsiveness and operational maturity therefore have no numerical rating here.

Alternatives depend on what you need to write

cudarc provides Rust wrappers for CUDA libraries and NVRTC runtime kernel compilation. Its README demonstrates compiling a CUDA-language kernel at runtime. Consider it when your Rust host application can use CUDA libraries or CUDA-language kernels without compiling device code from Rust.

Triton describes itself as a language and compiler for custom deep-learning primitives. Consider it when that workload is the priority and a separate kernel language is acceptable.

Neither alternative was measured alongside this repository. If Rust-authored SIMT kernels are the requirement, start with cuda-oxide's documented prerequisite check, then validate a small kernel on the machine that will run it.

Alternatives

ProjectWhat it isPick it when
cudarcRust CUDA wrappers with library access and NVRTC runtime kernel compilation.Consider it when your Rust host program can use CUDA libraries or CUDA-language kernels without compiling device code from Rust.
Triton gh↗A language and compiler for custom deep-learning primitives.Consider it when custom deep-learning kernels are the priority and adopting a separate kernel language is acceptable.

Sources

  1. CUDA Rust repository and programming-model comparison
  2. cuda-oxide README and requirements
  3. cudarc README
  4. Triton README

More dev tools reviews

PCL · rpcs3 · shellcheck · mpv · dsh-pocket · mkdocs-material · the whole board →