NVlabs/cutile-rs
cuTile Rust provides a safe, tile-based kernel programming DSL for the Rust programming language. It features a safe host-side API for passing tensors to asynchronously executed kernel functions.
解决的问题
cuTile Rust 提供了一种使用惯用 Rust 编写内存安全且无数据竞态的 GPU 内核的方法。通过将 Rust 的所有权和借用规则扩展到主机 (CPU) 与设备 (GPU) 之间的边界,它消除了 GPU 编程中手动内存管理和并发错误的常见风险。
工作原理
该系统使用基于分块 (tile-based) 的方法来管理 GPU 内存。可变张量在启动前被划分为不相交的块,而不可变张量则被共享。#[cutile::module] 宏捕获内核的 Rust AST,并通过 CUDA Tile IR 进行 JIT 编译,生成 GPU cubin。这使得系统可以直接在设备代码中保留所有权和访问规范(例如独占可变访问或共享只读访问)。
适用对象
想要在 Rust 中编写高性能 GPU 内核,且不想承担传统 CUDA C++ 编程相关安全风险的开发者,特别是针对具有 sm_80 或更高计算能力 NVIDIA GPU 的开发者。
亮点
- 内存安全性:将 Rust 的所有权规范扩展到 GPU 内核,以防止数据竞态。
- JIT 编译:使用基于宏的系统将 Rust AST 编译为 CUDA Tile IR。
- 高性能:在 NVIDIA B200 上进行 GEMM 操作时,可达到密集
f16峰值性能的 92%,足以与 cuBLAS 媲美。 - 灵活执行:支持同步启动、异步流水线和 CUDA 图重放。
- 集成:被用作 Qwen 3 推理引擎 Grout 的基础。
相关
- Dispatch
- 项目
- 项目
- 项目
- 项目