Rust 正在接管 GPU 编程:239K 行代码替代整个 CUDA 生态

CUDA 为什么变成这样?
想象一下,你是一个厨师,但你只能用 NVIDIA 的灶台做饭。不是因为别的灶台做不出好菜,而是因为所有的菜谱都是用 NVIDIA 家的"方言"写的。这就是 GPU 编程的现状——cuBLAS、cuDNN、cuFFT,这些库就像是一套专属的厨房设备,只有 NVIDIA 的硬件才能用。
问题是:如果哪天你不想用 NVIDIA 了呢?
这听起来像是个假设,但现实里越来越多人开始认真考虑这件事。硬件供应的不确定性、性能调优的封闭生态、还有那些"在我这儿能跑"的尴尬场景——都在推动行业寻找替代方案。
最近,Oxide Computer 这个做服务器的公司扔出了一个项目,叫 OxiCUDA。他们干了件挺疯狂的事:用纯 Rust 把整个 NVIDIA CUDA 软件栈重写了。
OxiCUDA 是什么?
简单说,这是一个用 Rust 写的 CUDA 替代品。它的目标是让你不用装 NVIDIA 的 SDK 就能跑 GPU 计算。
核心数据:239K 行 Rust 代码,28 个 crate,支持 cuBLAS、cuDNN、cuFFT、cuSPARSE、cuSOLVER、cuRAND 这些主流库。说白了,你现在能用 Rust 直接调用这些计算内核,不再需要 NVIDIA 的 C 代码。
有意思的地方在于实现方式。项目作者 KitaSan 没有选择预先编译好的 PTX 代码,而是用 Rust 数据结构在运行时生成 PTX 汇编。这意味着:不需要 CUDA SDK,不需要预编译工具链,只要一个能跑的 Rust 环境就行。
内置的自动调优器(autotuner)是另一个亮点。它会根据你的具体硬件自动选择最优的 kernel 配置,不用你手动调参。
为什么 Rust 适合干这种事?
Rust 解决了一个 CUDA 长期存在的问题:内存安全。
GPU 编程里的 use-after-free、数据竞争、设备内存泄露,这些问题在 C/C++ 里是家常便饭。你可能有过这种经历:程序在自己机器上跑得完美,到用户那边就开始随机崩溃。排除法排查半天,最后发现是某个内存句柄没正确释放。
Rust 的所有权模型把这些问题的责任从程序员身上转移到编译器。引用就是引用,借了就得还,编译器盯着你,不会让你在运行时摸到这些坑。
Rust 的零成本抽象意味着没有额外的运行时开销,生成的代码和你手写的 C 差不多快,但更安全。
还有一个务实的理由:Rust 的工具链比 CUDA 简单太多了。你不需要装几 GB 的 SDK,不需要配置一堆环境变量,直接 cargo add oxicuda 就行。
跨平台这个大招
OxiCUDA 不只是 CUDA 的替代品,它还是一个通用的 GPU 计算抽象层。
目前项目已经支持 CUDA、Apple Metal 和 Vulkan Compute 三种后端。这意味着同一套代码,编译时换个目标平台就能跑在不同的 GPU 上。
这对于开发者来说挺实用的。比如你开发的时候用 macOS + Metal 调试,生产环境切到 NVIDIA 卡就跑 CUDA。但你的业务逻辑完全不用改。
背后的设计思路是把 Device trait 作为统一的抽象,任何实现了这个 trait 的后端都能接入项目。这个模式很 Rust——用 trait 把差异封装起来,对外暴露统一的接口。
计算图与 CUDA 替代方案生态
项目还包含一个计算图的实现,用来描述和执行复杂的计算流程。这类似于 TensorFlow 或 PyTorch 里的计算图概念,只不过这里是纯 Rust 写的。
在数字信号处理方面,已经支持傅里叶变换(FFT)、小波变换(Daubechies wavelet)和 IIR/FIR 滤波器。这些是信号处理的基础算法,GPU 加速后能显著提升处理速度。
如果你在处理音频、视频或者传感器数据,这些能力会直接派上用场。
现状与局限
目前还是 v0.1.0 版本,生产环境使用需要谨慎。
性能方面没有公开的 benchmark 数据,实际表现需要自己测试。项目作者在博客里提到了几个已知的局限性,比如某些特殊场景下的优化空间还没完全挖掘。
另外,如果你用的是比较新的 GPU 架构,可能需要等上游支持跟进。
总的来说,这是一个很有前途的项目,但用它替换现有生产系统之前,建议先在非关键路径上验证一段时间。
普通开发者能用吗?
如果你现在就在用 CUDA,重写的成本不低。但如果你是从零开始做 GPU 项目,或者想找一个不依赖 NVIDIA 的解决方案,OxiCUDA 值得关注。
入门的方式很简单:看看项目的 examples,看看你需要的库是不是已经支持了。它的设计目标之一就是降低门槛——不需要懂 CUDA 内部原理,只需要懂 Rust。
对 Rust 社区来说,这个项目说明 Rust 在系统级编程、高性能计算领域的应用正在往更底层延伸。
顺便分享一个我常用的 AI自媒体运营工具 ,覆盖内容排版、素材处理和效率提效,写公众号会更省力。
最近在玩 Claude Code 的新功能,发现官方出了个 Codex 增强版门户 ,把各种智能编程能力整合在一起了,感兴趣可以去看看。
如果你想看到更多这类工具测评和 AI 编程实战,欢迎关注我的公众号「梦兽编程交个朋友」,每周更新。
常见问题
Q: OxiCUDA 性能比原生 CUDA 差吗? 目前没有公开的 benchmark 数据。由于是运行时生成 PTX,在某些场景下可能略有开销,但 Rust 的零成本抽象能把这个差距控制在很小范围内。实际表现需要针对你的场景测试。
Q: 能完全替代 CUDA 吗? 不能。对于需要最新 GPU 特性的场景,原生 CUDA 仍然是最佳选择。OxiCUDA 适合作为替代方案,特别是当你需要跨平台支持或者不想依赖 NVIDIA SDK 时。
Q: 项目稳定吗? 目前是 v0.1.0,生产环境使用需要谨慎。建议先在非关键场景验证一段时间。
