NVIDIA/cuda-rust
NVIDIA's CUDA platform for Rust. Host runtime crates plus Tile (cutile-rs) and SIMT (cuda-oxide) kernel programming models in idiomatic Rust.
解决的问题
它使开发人员能够使用纯 Rust 编写 GPU 内核,而无需使用 C++ 或特定领域语言 (DSLs)。通过提供自定义编译器后端,它消除了对外语绑定的需求,并允许主机与设备代码共存于同一个文件中,简化了高性能 CUDA 应用程序的开发。
运作原理
该项目实现了一个自定义的 rustc 后端,将 Rust 代码直接编译为 CUDA PTX。它使用原生的 Rust 编译管线 (Rust $\rightarrow$ Rust MIR $\rightarrow$ Pliron IR $\rightarrow$ LLVM IR $\rightarrow$ PTX)。它包含用于内存管理和内核启动的主机端运行时,以及用于类型安全索引、共享内存和 warp/cluster 操作的设备端抽象。
目标受众
希望在 GPU 编程中使用 Rust 的安全性和表达能力,特别是针对 NVIDIA 硬件的系统程序员与 AI 研究人员。
特色亮点
- 单源编译:主机与设备代码在同一个文件中管理,并使用单个命令 (
cargo oxide build) 进行构建。 - 纯 Rust 内核:支持具有单态化 (monomorphization) 的泛型函数以及带有捕获的闭包。
- 全面的 GPU 支持:完整访问 CUDA 内建函数,包括线程/warp 操作、共享内存、屏障、TMA 和集群。
- 高级互操作性:支持通过 LTOIR 进行 Rust 与 C++/CCCL 的设备端 FFI 互操作。
- 异步运行时:提供一个
cuda-async层,用于可组合的异步 GPU 操作。
相关
- 项目
- 项目
- 项目
- 项目