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.

它解决了什么问题

编写 GPU 内核(kernels)传统上容易出错,经常导致内存安全问题和数据竞争。cuTile Rust 提供了一个在 Rust 中编写这些内核的系统,将 Rust 严格的所有权和借用规则扩展到 GPU,从设计上确保内核是内存安全且无数据竞争的。

运作原理

它采用基于块(tile)的方法,将可变输出分割成不重叠的块(tiles),同时共享只读输入。该系统使用 #[cutile::module] 宏将 Rust 函数转换为 GPU 内核,并生成主机端的启动器。这些内核随后通过 CUDA Tile IR 进行 JIT 编译,使其能够同步执行、通过 async/await 执行,或作为 CUDA 图形重播(graph replays)执行。

目标受众

希望使用 Rust 的安全保证来编写高性能 GPU 内核,而非传统 CUDA C++ 的开发者,以及正在构建需要自定义、优化 GPU 操作的机器学习推理引擎(如 Grout 或 Candle)的研究人员。

特点

  • 内存安全:将 Rust 的所有权规则扩展到设备端,以防止数据竞争。
  • JIT 编译:使用 CUDA Tile IR 即时编译内核。
  • 灵活执行:支持同步、异步以及 CUDA 图形重播执行模式。
  • 高性能:在 GEMM 操作上能达到接近 cuBLAS 的性能,并为 LLM 推理提供高吞吐量。

相关