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
- 專案
- 專案
- 專案
- 專案