NVIDIA/cuda-rust

开发工具

用 Rust 编写并运行 CUDA GPU kernel,可选择张量式 Tile 或底层 SIMT 两种编程模型。

3,870
350
Rust
Apache-2.0
创建于 6 个月前

CUDA Rust 是 NVIDIA 面向 Rust 的早期实验性 GPU 编程平台。它把主机侧运行时(驱动绑定、上下文、流、缓冲区、事件和异步操作)与两种设备端 kernel 写法组合在一起,主要适合需要用 GPU 做数值计算或系统编程的 Rust 开发者,而不是普通终端用户。

两种 kernel 模型

SIMT 路径(cuda-oxide)包含自定义 rustc codegen 后端、cargo 辅助工具和 device crates,对应传统 CUDA 线程模型;开发者直接控制线程/block 索引、共享内存和同步,代码提前从 Rust 编译为 PTX。该路径固定使用 stable Rust 1.99.1,由 cargo oxide 管理,并需要 rustc-dev 与 llvm-tools CUDA Rust README。

Tile 路径(cutile-rs)由 proc-macro 插件和 crates 组成:张量被划分为 sub-tensor,kernel 以整块 tile 为单位计算,编译器决定 tile 如何映射到各架构并做 GPU 调优;首次启动时经 Tile IR JIT 编译为 cubin,要求 stable Rust 1.89 或更新版本 CUDA Rust README。Tile 在 kernel 内去除了显式线程索引和同步;稀疏、指针追逐类负载更适合 SIMT,稠密数值张量计算更适合 Tile。两者可在同一 stream 上共享设备缓冲区运行。

运行时提供什么

主机侧由 cuda-bindings(CUDA driver API 绑定)、cuda-core(含 cuda-core-derive,提供上下文、流、内存、模块、事件和 launch)以及 cuda-async(惰性操作、future、流和图)组成 CUDA Rust README。两种模型都把 Rust 所有权规则延伸到 GPU launch 边界:可变缓冲区在 launch 前切分为互不重叠的部分,不可变缓冲区可共享,launcher 在 GPU 工作期间保持借用有效。

要求与当前状态

使用任一模型都需要兼容的 NVIDIA GPU 和 CUDA 驱动;SIMT 路径还需配置其固定工具链,Tile 只需 stable Rust 1.89+。安装说明和参考材料分别位于 cuda-oxide 与 cutile-rs 各自的 book 中,运行时 crates 的文档在 cutile-rs book 中 CUDA Rust 文档。

项目自述为早期研究项目:预计会有 bug、功能不完整和 API 破坏,不构成生产稳定性承诺 CUDA Rust README。整个仓库(包括两种 kernel 模型和共享主机 crates)采用 Apache-2.0 许可 LICENSE。

HotRepo 点评

只有 2026-10-29 一条 GitHub Trending 日榜记录:当天 3,866 stars、+32;所给榜单历史过短,不足以判断趋势。

本文由 AI 根据项目 README 生成,更新于 2026年10月29日,以项目官方文档为准。