Rust Running on Every GPU
10 months ago
- #Cross-platform
- #Rust
- #GPU
- 一个演示展示了基于Rust的单一代码库可在所有主流GPU平台上运行,包括CUDA、SPIR-V、Metal、DirectX 12、WebGPU以及CPU回退方案。
- 传统GPU编程需使用WGSL、GLSL、MSL、HLSL、Slang或Triton等专用语言,增加了复杂度。
- Rust GPU、Rust CUDA和Naga等项目实现了将标准Rust代码直接编译到GPU目标平台。
- 该演示通过完全用Rust编写的双调排序算法,在所有目标平台上共享统一的计算逻辑。
- 后端选择通过Rust特性标志(feature flags)和编译目标实现,支持动态选择GPU技术方案。
- 内核代码会被编译为对应设备格式,并在构建时直接嵌入二进制文件。
- Rust的no_std支持对GPU编程至关重要,因为GPU环境无法使用标准库。
- 通过条件编译、新类型(newtypes)、枚举、特质和泛型等特性实现类型安全且高效的GPU代码。
- 项目采用Rust模块系统、工作区(workspaces)及rustfmt/clippy等标准工具保证代码组织和质量。
- GPU内核代码可使用标准Rust测试工具在CPU上测试,显著提升开发和调试效率。
- 尽管取得进展,开发者体验仍存在编译器后端集成和调试困难等痛点问题。
- 呼吁Rust社区共同参与改进Rust的GPU编程体验。