CUDA Rust
CUDA Rust 是 NVIDIA 面向 Rust 的 CUDA 平台,提供用于 CUDA 驱动的宿主端运行时 crate,以及用惯用 Rust 编写 GPU 内核的设备端 crate 和工具,支持 SIMT 与 Tile 两种内核编程模型。
访问 NVIDIA/cuda-rust项目简介
CUDA Rust 是 NVIDIA 面向 Rust 的 CUDA 平台。它提供用于对接 CUDA 驱动的宿主端运行时 crate,以及用于以惯用 Rust 编写 GPU 内核的设备端 crate 和工具。项目包含面向传统 SIMT 内核编程模型的 cuda-oxide 和面向 Tile 编程模型的 cutile-rs,并提供共享运行时 crate,覆盖驱动绑定、上下文、流、设备缓冲区、事件以及惰性、可组合的设备操作。
核心功能
- 宿主端运行时 crate 包括 cuda-bindings、cuda-core(含 cuda-core-derive)和 cuda-async,提供驱动绑定、上下文、流、设备缓冲区、事件以及惰性、可组合的设备操作。cuda-oxide 提供自定义 rustc 代码生成后端、cargo 辅助工具和相关 crate,用于 CUDA SIMT 内核编程模型,并可访问设备端 CUDA 编程细节。cutile-rs 提供过程宏插件和相关 crate,用于 CUDA Tile
适用场景
- 移植现有 CUDA C++ 内核,或需要对线程、warp、共享内存、TMA 或 cluster 操作进行直接控制时。问题可自然表达为张量计算,尤其是对密集数值数据进行数学运算时,Tile 模型更合适。问题稀疏、涉及指针追逐,或需要把传统数据结构映射到 GPU 时,SIMT 提供更多灵活性。应用可在同一流上通过共享设备缓冲区组合 Tile 和 SIMT 内核。
快速开始
- 先从 CUDA Rust 文档开始;cuda-oxide 和 cutile-rs 各自有配套书籍,包含安装说明、指南和参考资料。运行时 crate cuda-bindings、cuda-core 和 cuda-async 的文档位于 cutile-rs 的书中。
部署与要求
- cuda-oxide 使用由 cargo oxide 管理的固定稳定版 Rust 工具链 1.99.1。cutile-rs 需要稳定版 Rust 1.89 或更新版本。
采用前须知
- 许可证:Apache-2.0。在使用、修改或分发项目前,请确认其具体条款。