Rain科技8月18日消息,近日,一篇聚焦Rust语言GPU编程的最新研究论文显示,通过LLVM的卸载基础设施,Rust编写的GPU内核性能已能媲美手写优化的CUDA和HIP C++方案。这一结论基于对两种主流GPU架构的全面测试,意味着Rust在保持内存安全的同时,性能表现已接近传统C++方案。
这套方案完全构建于LLVM后端与Rust编译器内部,无需依赖第三方组件。其编译器前端具备内存安全特性,绝大多数GPU内核无需使用裸指针即可完成开发。与传统GPU编程中频繁使用裸指针以追求极致性能不同,Rust的抽象机制在编译期就提供了安全保障,降低了运行时错误的风险。
Rust的所有权系统在编译期即可保证GPU内存安全,与CUDA中需要运行时调试的通信错误不同,Rust的借用检查器在编译阶段就能捕获这类问题。这种静态检查机制显著降低了开发者在并行编程中排查与内存相关错误的难度,尤其对于大规模GPU内核,其优势更为突出。
基准测试在英伟达H100和AMD MI250X两款GPU上完成,采用RAJAPerf基准套件。在英伟达H100上,Rust内核的运行速度比原生CUDA快11%到慢46%不等,具体取决于工作负载。在AMD MI250X上,Rust内核的表现与HIP C++方案相比,整体差距也在类似范围内。这表明Rust的性能并非在所有场景下都优于C++,而是在某些特定负载下具有优势。
分析这些性能差异的根源,主要来自寄存器压力与循环展开的适配度。Rust的平均寄存器压力略高于CUDA(33个寄存器对28个),在FIR、LTIMES等对循环展开敏感的微基准测试中差距最为明显。从客观角度看,寄存器压力差异源于Rust编译器在生成中间表示时的保守策略,以及循环展开决策的不同。CUDA的成熟优化流水线经过多年打磨,而Rust在GPU后端上仍处于早期阶段,因此这些差距是可以理解的。研究团队表示,后续将通过代码生成优化和中间表示差异适配继续缩小剩余的性能差距。
该研究的核心价值在于证明了内存安全与高性能可以兼得,传统GPU编程为追求极致性能常需使用裸指针,而Rust方案在保持编译期内存安全保证的同时,实现了与手工优化C++代码竞争的性能。这一成果不仅为Rust在GPU计算领域开辟了新的可能性,也为未来语言设计提供了参考——安全性不必然以牺牲性能为代价。从更长远的角度看,Rust的生态工具(如Cargo、Clippy)以及活跃的社区,将进一步推动其在HPC和AI领域的应用。
该研究由曼努埃尔·S·德雷瓦尔德、马塞洛·多明格斯等五位学者共同完成,论文已发表于arXiv平台,完整研究论文可在该平台查阅(编号2608.13759)。有兴趣的读者可以进一步了解其具体实现细节与基准测试数据。

