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 kernel 的方法。透過將 Rust 的所有權與借用規則擴展到主機 (CPU) 與裝置 (GPU) 之間的邊界,它消除了 GPU 程式設計中手動記憶體管理與並行錯誤的常見風險。

工作原理

該系統使用基於分塊 (tile-based) 的方法來管理 GPU 記憶體。可變張量在啟動前會被劃分為不相交的區塊,而不可變張量則會被共享。#[cutile::module] 宏會擷取 kernel 的 Rust AST,並透過 CUDA Tile IR 進行 JIT 編譯,生成 GPU cubin。這使得系統可以直接在裝置程式碼中保留所有權與存取規範(例如獨佔可變存取或共享唯讀存取)。

適用對象

想要在 Rust 中撰寫高效能 GPU kernel,且不想承擔傳統 CUDA C++ 程式設計相關安全風險的開發者,特別是針對具有 sm_80 或更高運算能力的 NVIDIA GPU 的開發者。

亮點

  • 記憶體安全性:將 Rust 的所有權規範擴展到 GPU kernel,以防止數據競態。
  • JIT 編譯:使用基於宏的系統將 Rust AST 編譯為 CUDA Tile IR。
  • 高效能:在 NVIDIA B200 上進行 GEMM 操作時,可達到密集 f16 峰值效能的 92%,足以與 cuBLAS 媲美。
  • 靈活執行:支援同步啟動、非同步流水線與 CUDA 圖重放。
  • 整合:被用作 Qwen 3 推理引擎 Grout 的基礎。

相關

  • Dispatch
  • 專案
  • 專案
  • 專案
  • 專案