
“ 今天,github 上出现了一个项目 OxiCUDA。虽然目前一个星星都没有,但我感觉这个项目很犀利。因此分享给大家。
根据介绍信息,其有 23.9 万行纯 Rust 代码,绕开了 CUDA SDK,仅需驱动即可调用NVIDIA GPU。
这是 Rust 社区打破硬件绑定、构建原生 GPU 计算栈的一次验证。”
23.9 万行纯 Rust 代码,不要 CUDA SDK 也能跑 GPU。这是今天下午(2 个小时前)github 上刚发布的一个 Rust 生态的原生 GPU 计算栈项目——OxiCUDA。
这个项目刚刚发布 2 个小时多,虽然还没有星星(严格说有 2 星,除了团队账号和我……),但我感觉这个项目相当犀利,所以分享给大家。
我也是胡乱搜索中发现的,主要是被“239K lines of safe Rust across 28 crates”介绍吸引,然后发现 crates.io 和 GitHub 上同时出现了一个新项目:OxiCUDA。它由 28 个 crate 组成,总计约 23.9 万行纯 Rust 代码。
项目的核心主张只有一句话:“No CUDA SDK. No nvcc. No C/C++ compiler. Just cargo build.”

在 AI 和高性能计算的底层,NVIDIA 的 CUDA 平台是绕不开的基础设施。开发者若想调用 GPU 算力,标准路径是安装体积数 GB 的 CUDA Toolkit,用 C++ 编写内核,再通过各种 FFI 绑定将计算任务交由 GPU 执行。
对 Rust 开发者而言,这套流程意味着额外的构建复杂度、跨平台兼容性负担,以及 FFI 边界上潜在的内存安全隐患。
根据项目介绍,OxiCUDA 试图提供另一条路径:它完全绕开 CUDA SDK 的静态依赖,仅在运行时动态链接系统显卡驱动自带的 libcuda.so(或 Windows 下的 nvcuda.dll)。换句话说,只要用户的机器上安装了 NVIDIA 驱动,OxiCUDA 就能在纯 Rust 工具链下完成从上下文创建、内存拷贝到内核启动的完整流程。项目甚至包含了用纯 Rust 实现的 BLAS 库(oxicuda-blas)和 DNN 基元库(oxicuda-dnn),分别对标 cuBLAS 与 cuDNN 的核心功能。
一、这是一次“栈”层面的尝试
四月初,Vector 在 AUTOSAR 中国日上探讨 Rust 与汽车软件标准融合。我当时写过:当定规矩的公司开始认真评估一门新语言,说明它已经走出了技术爱好者的圈子。
OxiCUDA 的意义不在规模,而在于它试图在 GPU 计算这个长期由单一厂商主导的领域,验证一种去中心化工具链的可能性。汽车行业用 Rust,瞄准的是编译期内存安全检查能削减 30%-50% 的验证成本;OxiCUDA 用 Rust,瞄准的则是将 GPU 计算栈从一套庞大、封闭的 C/C++ 工具链中解耦出来。
值得留意的是时间点。就在 OxiCUDA 上线前三天(4 月 10 日),Rust 官方宣布将在 1.96 版本中移除 WebAssembly 目标的宽松链接标志。这意味着编译到 Wasm 的 Rust 代码,任何未定义符号都将直接触发编译错误,不再允许模糊通过。
两件事指向同一个方向:Rust 社区正在系统性地提高底层软件的确定性门槛。 一边用纯 Rust 实现打破对外部 SDK 的硬依赖,另一边通过编译器规则收紧对输出质量的要求。
二、v0.1.0 的实际位置
作为 v0.1.0 版本,OxiCUDA 当前处于早期公开阶段。从技术层面看,有几点值得关注:
首先,动态加载机制是可行的。CUDA 驱动 API 本身设计为可动态加载,OxiCUDA 通过 Rust 的 libloading 在运行时解析函数指针,这条路径在技术逻辑上没有硬阻塞。
其次,性能验证尚未展开。oxicuda-blas 宣称支持根据 GPU 架构(Turing、Ampere、Hopper)动态调整 Tile 策略和指令路径,但目前还没有公开的基准测试数据能说明它与官方 cuBLAS 的实际差距。
第三,生态系统仍处空白。CUDA 的价值不仅在于库函数,还在于配套的性能分析工具(Nsight)、调试器以及长期积累的开发者经验。OxiCUDA 目前解决了“能否运行”的问题,“如何优化”和“如何排错”尚未涉及。
第四,依赖关系并未完全消失。虽然 OxiCUDA 不依赖 CUDA SDK 编译,但运行时仍需系统存在 NVIDIA 驱动。严格来说,它移除的是开发时依赖,而非运行时依赖。
三、一点判断——个人观点
OxiCUDA 的出现,提供了一个观察 Rust 生态演进方向的样本。它表明:用纯 Rust 构建一套不绑定特定厂商 SDK 的 GPU 计算栈,在技术上是成立的。
至于这套方案能否从 v0.1.0 走到生产环境,取决于几个变量:团队能否持续跟进 NVIDIA 的硬件迭代,社区是否有足够多的 GPU 架构专家参与贡献,以及后续性能数据能否说服开发者切换工具链。
Rust 从 1.0 发布到进入 Linux 内核,用了十一年。OxiCUDA 刚刚发出第一个公开版本。现在下任何结论都为时过早,但它把一条原本少有人走的路,铺出了第一段路基。
参考引用:
1. OxiCUDA GitHub 仓库(cool-japan/oxicuda)及 crates.io 发布记录
2. Rust 编译器 PR:Remove export-name and import-name flags for Wasm target
3. 盖世汽车:《安全与效率,探索 RUST 与 AUTOSAR 融合的汽车软件新范式》
谢谢您的阅读,欢迎交流。如果您发现错别字,也请向我发信息。