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 カーネルの記述は従来エラーが発生しやすく、メモリ安全性の問題やデータ競合を引き起こすことがよくあります。cuTile Rust は、Rust の厳格な所有権と借用のルールを GPU に拡張することで、設計段階からメモリ安全でデータ競合のないカーネルを記述できるシステムを提供します。

仕組み

可変の出力を重複しない断片(タイル)に分割し、読み取り専用の入力は共有するタイルベースのアプローチを採用しています。このシステムは #[cutile::module] マクロを使用して Rust 関数を GPU カーネルに変換し、ホスト側のランチャーを生成します。これらのカーネルは CUDA Tile IR を通じて JIT コンパイルされ、同期実行、async/await による実行、または CUDA グラフのリプレイとして実行可能です。

対象ユーザー

従来の CUDA C++ ではなく、Rust の安全性を活用して高性能な GPU カーネルを記述したい開発者、およびカスタムで最適化された GPU 操作を必要とする機械学習推論エンジン(Grout や Candle など)を構築する研究者。

特徴

  • メモリ安全性: Rust の所有権ルールをデバイス側に拡張し、データ競合を防止します。
  • JIT コンパイル: CUDA Tile IR を使用してカーネルをオンザフライでコンパイルします。
  • 柔軟な実行: 同期、非同期、および CUDA グラフのリプレイ実行モードをサポートします。
  • 高性能: GEMM 操作において cuBLAS に近いパフォーマンスを実現し、LLM 推論において高いスループットを発揮します。

関連

  • Dispatch
  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch