你可以把GPU想成一间挤满工人的车间。过去,Rust程序能站在门口分派任务,真正进入车间执行计算的那段程序,却往往要换成另一种语言来写。英伟达现在想补上这道断层:让开发者直接用Rust编写GPU kernel——也就是在GPU上并行运行的小段计算程序——再把它原生编译成PTX。PTX是CUDA工具链使用的一种中间指令形式。
这件事值得关注,不只是因为多了一种语言。Rust会在编译阶段拦截许多越界访问、无效指针等内存问题,同时强调接近底层的性能。对驱动、推理引擎和AI服务基础设施而言,这种组合很有吸引力。不过,目前信息全部来自英伟达2026年9月发布的官方博客,尚无第三方复现或性能数据。
这次“原生”在哪里?
据英伟达官方博客,CUDA Rust不是让Rust简单调用由其他语言写好的kernel,而是让kernel本身用Rust编写并编译成PTX。主机端代码——负责准备数据和启动任务的部分——与GPU端代码还可以放在同一个文件里,通过一套命令构建,不必另外维护kernel项目。
英伟达也承认,这并非从零开始。Rust-CUDA等社区项目已经探索多年,官方团队称其一直在与rust-cuda维护者合作。现在的变化,更像是CUDA平台的主人把原本位于生态边缘的尝试接进官方路线。
官方还给出了一条内部需求线索:Nova Linux driver使用Rust,AI推理服务框架NVIDIA Dynamo以Rust为核心,性能分析工具NVTX则提供Rust bindings——即供Rust程序调用的接口。但这些说法不代表相关项目全部由Rust编写。此前缺失的一环,正是直接运行在GPU上的kernel。
两条路:自己排工位,或描述一块任务
CUDA Rust提供两种编程路线。
SIMT是“单指令、多线程”模型。开发者描述一个线程要做什么,再同时启动成千上万个线程。它接近传统CUDA C++的写法,也允许开发者亲自控制线程和内存。
Tile则把关注点从单个线程移到一块数据。开发者描述一个数据块要完成什么计算,编译器再决定它如何映射到不同GPU架构。英伟达建议优先考虑Tile,只有在需要细控内存或线程时再转向SIMT。这里要注意:“Tile first”是官方推荐策略,不是经过独立基准验证的普适结论。
官方示例让两条路线都对1,024个float——单精度浮点数——执行逐元素加法,并称两者输出相同结果。这个例子证明的主要是两条路径都能完成基本任务,并不能说明性能高低。
SIMT工具链怎样工作?
SIMT路线使用名为cuda-oxide的项目。它是rustc——Rust编译器——的自定义代码生成后端。带有#[kernel]标记的函数会依次经过Rust MIR、Pliron IR和LLVM IR,最终生成PTX;这里的IR可以理解为编译器逐步加工代码时使用的中间表示。其余普通Rust代码仍交给标准后端处理。
这条路径目前门槛不低。按官方说明,它要求Linux、compute capability 8.0或更高的GPU、CUDA Toolkit 12.x或更新版本、带libclang headers的clang,以及固定版本的nightly Rust工具链。nightly是更新快、稳定性承诺较弱的Rust试验版本;“固定版本”也意味着环境兼容仍需精确控制。
为什么值得继续看?
如果这套工具链逐渐成熟,Rust开发者便能在同一语言里连接主机端系统代码与GPU计算代码,减少跨语言切换。Rust的内存安全检查也可能把更多错误提前到编译阶段。不过,内存安全不等于程序必然正确,它不会自动消除算法错误或所有安全漏洞。
英伟达还计划支持不同语言前端之间的互操作。也就是说,选择Rust路线未来可能不必与C++或Python生态割裂。但这仍是路线图承诺,不能当作已经实现的能力。
局限与未知
- cuda-oxide仍处于early alpha阶段。英伟达明确表示,成熟、面向企业的仍是CUDA C++和CUDA Python;CUDA Rust要到2027年及以后继续成长和完善。
- 现有材料没有第三方复现、性能比较或生产环境数据,因此无法判断它相对现有方案的速度、稳定性和维护成本。
- 供稿在完整演示处截断,无法核查Tile路线的具体项目名称及更多实现细节。现阶段更准确的说法是:英伟达正式启动了原生CUDA Rust路线,而不是已经交付一套成熟稳定的生产级工具链。