NVlabs/CuTe

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

何を解決するか

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

仕組み

本質的に、PyCuTe は Shape(定義域)と Stride(マッピングロジック)を使用して座標からオフセットをマッピングする関数として Layout を定義します。これらのレイアウトを操作するための代数的演算のセットを実装しており、以下が含まれます:

  • Coalesce:レイアウトを最小限のモード数に簡略化します。
  • Composition:一つのレイアウトを別のレイアウトでインデックスします。
  • Complement:コドメインを埋めるために欠落しているモードを特定します。
  • Logical Divide/Product:パターンのタイリングや繰り返しを処理します。
  • Inversion/Nullspace:マップの解析と逆転を行います。

また、共有メモリのバンクコンフリクトを可視化および管理するのに役立つ F2(XOR-swizzle)ストライドもサポートしています。薄い Tensor レイヤーがこれらのレイアウトと Accessor を組み合わせて、データモデルを提供します。

対象読者

  • CUTLASS 3.x や CuTe DSL を使用している開発者。
  • GPU テンソル演算およびメモリレイアウトをプロトタイピングするエンジニア。
  • 階層的レイアウト代数を研究している研究者。

特徴

  • GPU非依存:ハードウェア要件なしで、純粋な Python(3.10+)で実行可能。
  • 可視化ツール:レイアウトを ASCII テーブル、色付き SVG、TikZ/PDF としてレンダリングするユーティリティを含む。
  • 包括的な代数:CuTe ホワイトペーパーに記載された完全なレイアウト代数を実装。
  • Swizzle 対応:XOR-swizzling を特に扱い、バンクコンフリクトを可視化。

これは、CUTLASS 3.x で使用される CuTe レイアウトおよびテンソル代数の純粋な Python リファレンス実装であり、GPU を必要とせずに GPU メモリレイアウトのプロトタイピングと分析を可能にする。 — @handle

関連

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