Nvidia 终于对 Rust 动手了。9 月 8 号,官方发布 CUDA Rust 工具链,GPU 内核可以直接用 Rust 写,不再是套个壳调 C++。
这事为什么重要?过去十几年,AI 基础设施的拼图里,Nvidia 的 CUDA 一直是 C++ 的地盘。Rust 想用 GPU?只能调外部库。Nova Linux 驱动、Dynamo 推理引擎、NVTX 绑定都是 Rust 写的,但最核心的 GPU kernel 还是得回去写 C++。这块拼图缺了十几年,现在终于补齐了。
现在这块拼图补齐了。Nvidia 一口气放出两个项目:
(1) cuda-oxide。一套自定义 rustc 后端,把 #[kernel] 函数直接编译到 PTX(GPU 机器码)。技术上靠社区的 Pliron 中间表示框架,全程在 Rust 里完成转换,最后才交给 LLVM。支持 SIMT 编程模型,就是老派 CUDA C++ 的那种「写一个线程干什么,扔出去跑几千次」。编译路径比传统 C++ 编译路径少一层转换,理论上 bug 也会少一层。
(2) cutile-rs。走 Tile 路线,跑在稳定版 Rust 1.89+ 上。编译器自己决定线程怎么分配、数据怎么排,你只管说「这一片数据做什么」。已经在 HuggingFace 的 Grout 推理引擎和 mistral.rs 里跑起来了。这种「描述意图、不写实现」的范式,对应到 ML 圈就是「写 PyTorch 而不是手写 CUDA」。
两条路线跟 CUDA C++ / Python 的布局完全对齐。SIMT 是给那些需要精细控制的场景,Tile 是给追求开发效率的场景。Nvidia 强调:「先选模型,再选语言」,不强制你二选一。
几个关键数据:
(1) cuda-oxide 需要 Linux、算力 8.0+ 的 GPU、CUDA 12.x、clang + libclang,以及固定的 nightly 工具链。
(2) cutile-rs 只要求稳定版 Rust 1.89 和 CUDA 13.3,没有自定义 LLVM,已经在 crates.io 发布。意味着今天就能上生产。
(3) 两个项目都做编译期内存安全检查。cuda-oxide 用 DisjointSlice 和 launch contract 防数据竞争;cutile-rs 用 tensor 分区和所有权机制保独享访问。C++ 里跑 kernel 最常踩的雷就是「线程越界」「shared memory 写冲突」,这俩在 Rust 里编译期就会被挡掉。
(4) HuggingFace 的 Grout 推理引擎已经在生产环境用 cutile-rs。Grout 是 HF 自己做的 inference engine,专门跑 Transformer 类模型。
这事的实质是 Nvidia 在抓 Rust 社区这波人。过去三年,AI infra 圈子大规模 Rust 化已成定局:Linux 内核在加 Rust 代码,Cloudflare 用 Rust 重写组件,Discord 把基础设施全切到 tokio。Nvidia 自己的 Nova Linux 驱动也是 Rust 写的。AWS、Microsoft、Google 的内部项目里,Rust 的份额每年翻一倍。
但 GPU kernel 一直是孤岛。Rust 工程师得跳回 C++,写完再调回来,配置和边界 bug 不断。Rust 最强的内存安全保证,到了 kernel 这层归零。现在这个孤岛被打通了。
对开发者意味着什么?如果你已经在用 Rust 写推理服务、agent runtime、driver,现在可以一路 Rust 到底,不再有「到 kernel 这段切语言」的尴尬。对一个团队来说,少切换一次语言等于少维护一套测试、少踩一遍边界 case、少开会讨论一次。
对 Nvidia 意味着什么?CUDA 生态又多了一层护城河。C++ 是过去,Python 是当下,Rust 是未来。三套前端都绑在 Nvidia 的硬件上。换句话说,无论你用什么语言写,最后都得跑在 Nvidia 的卡上。这才是 Nvidia 这步棋最狠的地方——它从来不争语言,它争的是「语言都得到我这儿来」。
对 OpenAI、Anthropic 这些公司的 infra 团队意味着什么?招聘池变大了一个量级。以后招「GPU 系统工程师」,不用只盯 C++ 老炮,Rust 新手也能干。Rust 工程师在 2025 年的平均年薪已经追上 C++,招聘难度反而比 C++ 低。
早先 Rust 圈有句玩笑:「Rust 拿不到 GPU,就是带轮子的 C。」现在这句话得改改了——Rust 拿到 GPU 了,而 C++,依然是那个被嫌弃的老前辈。