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カーネルを記述する方法を提供します。ホスト(CPU)とデバイス(GPU)の境界を越えてRustの所有権と借用ルールを拡張することにより、GPUプログラミングにおける手動メモリ管理の一般的なリスクや並行性のバグを排除します。

仕組み

このシステムは、タイルベースのアプローチを使用してGPUメモリを管理します。ミュータブルなテンソルは起動前に互いに重ならないように分割され、イミュータブルなテンソルは共有されます。#[cutile::module] マクロがカーネルのRust ASTをキャプチャし、CUDA Tile IRを介してJITコンパイルしてGPU cubinを生成します。これにより、システムは所有権とアクセス規律(排他的なミュータブルアクセスや共有読み取り専用アクセスなど)をデバイスコードに直接保持することができます。

対象者

従来のCUDA C++プログラミングに関連する安全性のリスクを回避しながら、Rustで高性能なGPUカーネルを書きたい開発者、特にcompute capability sm_80 以上のNVIDIA GPUをターゲットとする開発者に適しています。

ハイライト

  • メモリ安全性: Rustの所有権規律をGPUカーネルに拡張し、データレースを防止します。
  • JITコンパイル: マクロベースのシステムを使用して、Rust ASTをCUDA Tile IRにコンパイルします。
  • 高いパフォーマンス: NVIDIA B200でのGEMM演算において、密なf16のピークパフォーマンスの最大92%に達し、cuBLASに匹敵します。
  • 柔軟な実行: 同期起動、非同期パイプライン、およびCUDAグラフのリプレイをサポートします。
  • 統合: Qwen 3推論エンジンであるGroutの基盤として使用されています。

関連

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