
NVIDIA SASS命令辞書のリバースエンジニアリング、カーネル監査、およびGPUアーキテクチャ間のパターン認識。
制御されたカーネルからプロダクション監査まで、NVIDIA SASS をリバースエンジニアリングする。
記事1 · 記事2 · 知識ベース · パターンライブラリ · SM120 命令用語集 · エンコーディングノート · ここから始める · プロジェクト構成 · テンソルコア章 · コントリビューション
SASS King は、NVIDIA SASS(コンパイルされた CUDA バイナリ内部に発行されるネイティブ GPU 命令セット)の体系的なリバースエンジニアリングプロジェクトです。このプロジェクトは、SM120 / SM120a コンシューマ向け Blackwell ハードウェアから始まり、時間の経過とともに完全なクロスアーキテクチャ ISA およびパターンライブラリへと拡大していきます。
目的は実用的です。カーネルエンジニアが SASS ダンプを開き、コンパイラパターンを認識し、パフォーマンスに関連する構造を特定し、バイナリをソースレベルの最適化判断に結びつけることができるようにすることです。
プロジェクトは初期のフェーズ3パターンライブラリを完了しました。29 の再利用可能な SASS シグネチャが patterns/ の下で形式化され、knowledge/FINDINGS.md に完全な証拠の連鎖が保持されています。次の主要なステップはフェーズ4です。これらのパターンを実際のプロダクションカーネルに適用することです。
| 目的 | ここから始める | 次に読む |
|---|---|---|
| プロジェクトを10分で理解する | docs/README.md | docs/START_HERE.md、次に docs/PROJECT_STRUCTURE.md |
| 証拠を再現する | corpus/README.md | 1つの章 conclusion*.md、次にその .sass ダンプ |
| 真実の源泉を見つける | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md、knowledge/encoding/README.md |
| 新しいダンプでパターンを認識する | patterns/README.md | 対応する patterns/NN-*.md ページ |
| プロダクション監査を開始する | production/README.md | 対応する PATTERN-NN ページとソース証拠 |
| 修正やダンプをコントリビュートする | CONTRIBUTING.md | docs/START_HERE.md |
リポジトリは証拠パイプラインとして編成されています:
corpus/ 制御されたカーネルと生の SASS 証拠
knowledge/ プロジェクト全体の発見、命令ノート、エンコーディングノート
patterns/ 再利用可能なフェーズ3監査シグネチャ
production/ フェーズ4本番カーネル監査
同様の精神で最後に広く公開された SASS リバースエンジニアリングの取り組みは、2018年の Jia らによる Volta および Turing に関するものでした。Ampere、Hopper、Blackwell では命令ミックスが大幅に変更されています。非同期コピーパス、テンソルコアファミリ、行列ロード/ストア命令、スパースおよびスケーリングされた MMA 形式、新しいユニフォームレジスタフローです。
SASS King は、制御されたマイクロカーネル、生の SASS 読み取り、ランタイムプローブ、および本番カーネル監査を組み合わせることで、そのギャップを埋めます。
| 領域 | ステータス | 場所 |
|---|---|---|
| SM120 教育用カーネル | カーネル01-12 完了 | corpus/basics/01_vector_add/ から corpus/math_and_spills/12_register_spill/ |
| テンソルコア研究 | カーネル25 完了 | corpus/tensor_cores/ |
| 全体的な発見 | 現在の真実の源泉 | knowledge/FINDINGS.md |
| SM120 命令用語集 | 現在進行中、証拠に基づく | knowledge/SASS_INSTRUCTIONS_SM120.md |
| エンコーディングパイロット | LDSM、STSM、QMMA から開始 | knowledge/encoding/ |
| denvdis 相互検証 | 初期パス完了。制御コードの深いギャップが残る | knowledge/DENVDIS_INTEGRATION.md |
| パターンライブラリ | 初期フェーズ3ライブラリ完了 | patterns/ |
| プロダクション監査 | 次のフェーズ | production/ |
正式なパターンライブラリがフェーズ3の主要な成果です。章ごとの証拠を再利用可能な監査シグネチャに変換し、監査が毎回完全な研究の道筋を書き直す代わりに、名前付きパターンを引用できるようにします。
フェーズ3は完了と見なされます。なぜなら:
knowledge/FINDINGS.md のソース証拠に限定されたままであること;patterns/README.md から始まること;| パターンファミリ | 例 | 場所 |
|---|---|---|
| テンソルコア計算 | HMMA、QMMA、OMMA アキュムレータチェーン; スパースメタデータ; 狭断片 | patterns/02-* から patterns/04-*、patterns/10-*、patterns/21-* |
| 行列メモリとエピローグ | LDSM、STSM、非同期コピーパイプライン、REDG リダクションエピローグ | patterns/05-*、patterns/06-*、patterns/07-*、patterns/28-* |
| 制御フロー | 分岐/再収束、ループバックエッジ、述語付き出口、コールドトラップ、ローカル CALL | patterns/08-*、patterns/14-*、patterns/16-*、patterns/26-*、patterns/29-* |
| メモリとレジスタ | ベクトル化グローバルメモリ、スピル、共有メモリステージング、ディスクリプタ、ユニフォームレジスタフロー | patterns/09-*、patterns/11-*、patterns/17-*、patterns/19-*、patterns/20-* |
| 算術とスケジューリング | FFMA 融合、定数、MUFU スローパス、スコアボード、ライフタイムリサイクル | patterns/12-*、patterns/18-*、patterns/22-*、patterns/23-*、patterns/24-* |
| ワープコレクティブ | ワープリダクション、シャッフル/投票/マッチ/同期プリミティブ | patterns/01-*、patterns/25-* |
各パターンページには以下が含まれます:
patterns/README.md を監査向けのインデックスとして使用します。パターンの背後にあるより長い研究コンテキストが必要な場合は knowledge/FINDINGS.md を使用します。
フェーズ3は、すべての NVIDIA SASS 動作がデコードされたとは主張しません。手動のプロダクション監査を開始するのに十分な、再利用可能な SM120 / SM120a パターンレイヤーを確立します。ランタイムレイアウトデコード、完全な制御コードビット配置、自動化された cubin レポート、クロスアーキテクチャリプレイは将来の作業です。
公開記事:
制御された変動。 2つのカーネルは、dtype、オペランド順序、アンロール係数、メモリレイアウト、またはコンパイルターゲットの1つの変数のみが異なります。SASS の差分により、コンパイラの判断が分離されます。
厳格なクレームタグ。 すべての技術的クレームはタグを使用します:
| タグ | 意味 |
|---|---|
[OBS] | ダンプ、ログ、ランタイム出力、またはプロファイルで直接観測。 |
[INF] | 観測された証拠から推論。 |
[HYP] | もっともらしいが未確認。 |
[RES] | 以前の仮説が後の証拠で解決された。 |
[GAP] | 未解決の質問が明示的に文書化されている。 |
トップダウンとボトムアップの併用。 マイクロカーネルは個々の命令とコンパイラの判断を分離します。プロダクションライクなカーネルは、どのパターンが実際のコードで重要かを示します。
パターン優先の監査。 プロダクション監査では、可視の SASS シグネチャと一致し、その信頼限界、アンチパターン、未解決のギャップを引き継いだ後にのみ、正式な PATTERN-NN ページを引用する必要があります。
最初のパスは、SM120 テンソルコアとメモリパイプラインに焦点を当てます:
HMMA、QMMA、OMMALDSM、STSMLDGSTS、LDGDEPBAR、DEPBARLDG、STG、LDS、STS、REDGBRA、EXIT、BSSY、BSYNC、WARPSYNCSHFL、VOTE、REDUXS2UR、R2UR、UMOV、ULEA、LDCUこのプロジェクトは、ISA がまだ完全であると主張するものではありません。公開用語集は観測および説明されたものを追跡し、knowledge/encoding/ の下のより詳細なページは、マッチャースタイルのドキュメントに十分な証拠を持つファミリを追跡します。
SASS King はビットレベルの SASS 逆アセンブラと競合しません。このプロジェクトはローカルダンプを主要な証拠として使用し、命令フィールド、スケジューリングテーブル、述語、レジスタ追跡の相互チェックとして redplait/denvdis を使用することがあります。denvdis は低レベルのエンコーディング解釈を検証できます。SASS King は、制御された変動の証拠、意味パターンレイヤー、およびプロダクション監査の解釈を担当します。