Nvidia Labs 发布了 cuda-oxide v0.1.0,这是一套实验性的 Rust 到 CUDA 编译器,允许开发者使用 Rust 编写 CUDA 的单指令多线程(SIMT)GPU 核心,并直接编译为 NVIDIA GPU 使用的 PTX 中间表示。目前该项目仍处于早期 alpha 测试阶段。
cuda-oxide 让 Rust 开发者在开发 GPU 核心时,无需改写为 CUDA C++、使用特定 DSL 或依赖外部语言绑定。官方表示,开发者可以直接用 Rust 编写 GPU 核心,并通过自定义 rustc 代码生成后端编译为 PTX。项目还支持单源文件开发,主机端与设备端代码可放在同一份 Rust 文件中,通过 cargo oxide build 或 cargo oxide run 进行构建与运行。
简单来说,cuda-oxide 将 CUDA 带入了 Rust 生态,原本开发者使用 C++ 编写 CUDA 核心,现在可以选择使用 Rust。
开发者可以利用 Rust 的类型系统、所有权模型、泛型和闭包等语言特性,应用于 NVIDIA GPU 程序开发流程。官方文档指出,泛型与 trait 约束可用于 GPU 核心中,编译器会为不同类型生成独立的 PTX 入口点,开发者也能从主机端传入闭包,动态调整 GPU 端的计算行为。
cuda-oxide 还包含主机端 CUDA 运行时环境,负责内存管理、GPU 核心启动与异步 GPU 执行。官方提到,此次发布包含 cuda-core 与 cuda-async 等运行时 crate,开发者可先将 GPU 任务描述为延迟执行的 DeviceOperation 任务图,再由调度策略分配到 CUDA 流池中执行,最后使用 .await 等待结果。这一设计使 Rust 原有的异步编程模型也可用于安排 GPU 任务与等待 GPU 计算完成。
在 NVIDIA 的技术生态中,cuda-oxide 目前更像是将 CUDA 程序模型接入 Rust 生态的实验性入口,而非直接取代现有的 CUDA C++ 工具链。在官方 Rust+GPU 生态附录中,cuda-oxide 被列于多个 Rust GPU 方案之中,并与 Rust-GPU、CubeCL、std::offload 和 cudarc 等项目明确区分定位。cuda-oxide 的定位是用更安全的 Rust 形式表达 CUDA 程序模型。
cuda-oxide 的构建需求包括:Linux 系统、CUDA Toolkit 12.x 以上版本、NVIDIA Ampere 及以上架构的 GPU、Rust nightly 版本及 rust-src、rustc-dev 组件、支持 NVPTX 的 LLVM 21 以上版本,以及 Clang 21 或 libclang 相关开发头文件。官方文档也列出当前测试平台为 Ubuntu 24.04,PTX 输出目标涵盖 sm_80 至 sm_100a。