Roofline 分析ツール
Roofline Analysis ツールは、プログラムのパフォーマンスに影響するハードウェアの固有の制限を把握するために使用できる、直感的な視覚的なパフォーマンス モデルを提供します。具体的には、プログラムがメモリバウンドかコンピューティング バウンドか、プログラムのパフォーマンスがハードウェアの理論的なピーク パフォーマンスにどれだけ近いか(「ルーフライン」として表されます)に焦点を当てます。
サポートされているプラットフォーム
TPU: サポート対象
GPU: サポート(ベータ版)
ルーフライン グラフとは
屋根線グラフは、オペレーションの強度(アクセスされたバイトあたりの FLOPS)と達成された 1 秒あたりの FLOPS の関係を可視化します。
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
「屋根」の形状は、ピーク FLOPS と、メモリ帯域幅とオペレーションの強度で達成可能なパフォーマンスのどちらか低い方によって形成されます。リッジポイントは、ピーク FLOPS を達成するために必要な最小オペレーション強度を示します。
ルーフライン モデルの詳細については、Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures または Wikipedia の Roofline model トピックをご覧ください。
屋根線グラフの解釈
さまざまなステップ、プログラムの一部、個々の HLO オペレーションの動作の強度と達成された FLOPS を屋根線グラフにプロットすることで、パフォーマンスのボトルネックに関する分析情報を得ることができます。
- データポイントが屋根線の傾斜部分にある場合、パフォーマンスはメモリ帯域幅(メモリバウンド)によって制限されている可能性があります。オペレーションの強度を高める(アクセスするデータバイトあたりの計算を増やす)と、パフォーマンスが向上する可能性があります。
- データポイントが屋根線の平坦な部分にある場合、パフォーマンスはコンピューティング能力によって制限されている可能性があります(コンピューティング バウンド)。この場合、ハードウェアのピーク FLOPS をより有効に活用できない限り、オペレーションの負荷をさらに増やしても、パフォーマンスの大幅な向上は見込めません。
- データポイントの屋根線からの距離は、パフォーマンスの改善の可能性を示します。距離が大きいほど、ハードウェアの機能をより有効に活用するようにプログラムを最適化する機会があることを示します。
インターフェース コンポーネント
Roofline Analysis ツールのインターフェースには、次の重要なコンポーネントがあります。
- [デバイス情報] セクションには、ハードウェアの仕様が記載されています。これらは、グラフに「ルーフライン」を静的に描画するために使用されます。
- 次に対応するデータポイントを含むプログラムレベルのルーフライン グラフ。
- プロファイルの合計時間。
- プロファイルの合計時間。ただし、FLOPS/s データは、XLA コンパイラによって計算されるデフォルトの費用モデルではなく、ハードウェア パフォーマンス カウンタから取得されます。
- プロファイル期間中に実行された完了ステップの平均(トレーニング ジョブの場合。推論ジョブのステップの用語は無視できます)。
- プロファイル期間中に実行された各完全なステップ(トレーニング ジョブの場合。推論ジョブのステップの用語は無視できます)。
- 屋根線グラフには、次の機能もあります。
- プルダウンを使用して、インフィード/アウトフィードのオペレーションを含めるか、除外するかを選択できます。
- グラフ内の任意のデータポイントにカーソルを合わせると、さまざまなメモリの帯域幅数、合計時間など、関連する追加情報が表示されます。
- プログラム レベルの統計情報テーブル。各データポイントの詳細(最大メモリ使用率%、ピーク FLOPS レート% など)が表示されます。
- 2 つ目の屋根線グラフ: プロファイリング期間中に最も時間のかかる上位 1, 000 個のオペレーションのデータポイントがプロットされ、より詳細な情報が提供されます。
- プログラムレベルのルーフライン グラフと同様に、各データポイントにカーソルを合わせると、そのオペレーションに関する追加情報が表示されます。
- グラフに表示されるデータポイントは、次の方法でカスタマイズできます。
- プルダウンを使用して、インフィード オペレーションとアウトフィード オペレーションを追加または除外する。
- 特定のカテゴリのオペレーションをフィルタする。
- 特定のリソースによってバインドされたオペレーションのフィルタリング。
- 特定の名前付きオペレーションをフィルタする。
- 2 つ目の統計情報テーブル(プログラム レベルのテーブルに似ています)には、各データポイントの詳細情報が表示されます。
上記のすべてのセクションで、次のメモリがサポートされています。
- TPU の場合: HBM、VMEM、CMEM(TPU v4 のみ)。
- GPU の場合: HBM、L1/SharedMem。
- グラフの対応する線は、プロファイル時間内にそのメモリにバインドされたオペレーションがある場合にのみ表示されます。たとえば、すべてのオペレーションが HBM またはコンピューティングにバインドされている場合、VMEM または CMEM の行は表示されません。