NVlabs/CuTe

Reference implementation and examples of the CuTe Layout representation and algebra.

何を解決するか

PyCuTe は NVIDIA の CUTLASS 3.x で使用される階層的レイアウト・テンソル代数の純粋な Python 実装を提供します。開発者は GPU や元の CuTe ライブラリに必要な C++ 環境を必要とせずに、複雑な代数を学習し、新しいデータ変換をプロトタイピングし、テストベクターを生成できます。

動作方法

コアとなる概念として、PyCuTe は Shape(定義域)と Stride(マッピングロジック)を使用して座標からオフセットをマップする関数として Layout を定義します。coalesce、composition、logical_divide(タイリング)、logical_product(繰り返し)などの包括的な代数演算を実装し、これらのレイアウトを操作できます。また、共有メモリのバンク競合を処理するための F2(XOR-swizzle)ストライドもサポートしています。Layout と Accessor(ポインタなど)をペアにすることで Tensor が作成され、データの読み書きが可能になります。

対象ユーザー

GPU テンソル計算に取り組む開発者や研究者、Python でレイアウト変換をプロトタイピングしたい CUTLASS ユーザー、階層的テンソルレイアウトの数学的基盤を学びたい方々に最適です。

特徴

  • 純粋な Python: コア代数には GPU や CUDA 依存が不要です。
  • レイアウト代数: コンポジション、コンプリメント、ヌル空間などの演算を完全実装し、複雑なタイリングやパーティショニングに対応します。
  • 可視化ツール: ASCII テーブル、カラーベースの SVG、LaTeX/PDF としてレイアウトをレンダリングするための組み込みサポートがあり、データの移動やバンク競合を視覚化できます。
  • 参照実装: C++ の CuTe ライブラリと CuTe DSL に対する忠実な Python 対応実装です。

関連

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