< Table Of Contents

GPU ルーフラインを使用した GPU パフォーマンスの測定

GPU ルーフラインの調査パースペクティブは、ハードウェアによって制限されるパフォーマンスの上限に対するベンチマークとハードウェア・メトリックのプロファイルを使用して、GPU カーネルの実際のパフォーマンスを推測して視覚化し、主な制限の要因を特定します。

GPU / メモリーのルーフライン調査パースペクティブを実行するには、インテル® Advisor GUI と CLI からの 2 つの方法があります。両方の方法で収集された結果は、インテル® Advisor GUI で開くことができます。

インテル® Advisor GUI から GPU ルーフライン調査パースペクティブを実行

[Analysis Workflow (解析のワークフロー)] ペインで、ドロップダウン・メニューから [GPU Roofline Insights perspective (GPU ルーフライン調査パースペクティブ)] を選択し、データ収集の精度レベルを [Low (低)] に設定して、 ボタンをクリックします。この精度レベルでは、インテル® Advisor は次のことを行います。

  • GPU プロファイルと Survey analysis (サーベイ解析) を使用して、OpenCL*、OpenMP*、oneAPI Level Zero (レベルゼロ)、および SYCL* カーネルのタイミングとメモリーデータを収集し、ハードウェアの制限を測定します。
  • トリップカウントと FLOP 解析と GPU プロファイルを使用して、浮動小数点と整数操作のデータを収集します。

データ収集精度のプリセットの詳細については、インテル® Advisor ユーザーガイドの事前定義されたオフロードのモデル化の精度を参照してください。完了すると、インテル® Advisor は [GPU Roofline Summary (GPU ルーフライン・サマリー)] を表示します。[GPU Roofline Regions (GPU ルーフライン領域)] タブに切り替えて [Roofline Chart (ルーフライン・グラフ)] を表示し、アプリケーションのパフォーマンスを制限する主な要因を特定します。

重要

GPU プロファイルは、インテル® プロセッサー・グラフィックスにのみ適用できます。

[Roofline (ルーフライン)] グラフは、マシンが達成可能な最大パフォーマンスに対するアプリケーションのパフォーマンス演算強度を表示します。

  • 演算強度 (x 軸) - FLOAT ルーフライン・グラフはバイトあたりの浮動小数点演算数 (FLOPS) で測定され、INT ルーフライン・グラフはバイトあたりの整数演算数 (INTOPS) で測定されます。これは、GPU とメモリー間で転送されるカーネルのアルゴリズムに基づいています。
  • パフォーマンス (y 軸) - FLOAT ルーフライン・グラフは 1 秒あたり数十億回の浮動小数点演算 (GFLOPS) で測定され、INT ルーフライン・グラフは 1 秒あたり数十億回の整数演算 (GINTOPS) で測定されます。

一般に次のことが言えます。

  • ドットはカーネルを表します。ルーフのドットの大きさと色は、各カーネルの相対的な実行時間を示します。大きな赤いドットは最も時間を消費しているため、最適化の最良の候補となります。小さな緑のドットは実行時間が短いため、最適化の労力が無駄になるかもしれません。
  • ルーフの斜線は、最適化なしではカーネルがパフォーマンスを向上できない、メモリー帯域幅の上限を示します。

    システム構成に応じて、ルーフライン・グラフで次のルーフラインが使用可能になる場合があります。

    • L3 キャッシュルーフ: 現在使用しているグラフィックス・ハードウェアの L3 キャッシュの最大帯域幅を示します。最適化されたロード命令のシーケンスを使用して、L3 キャッシュに収まる配列を反復処理して測定します。
    • SLM キャッシュルーフ: 現在使用しているグラフィックス・ハードウェアの共有ローカルメモリーの最大帯域幅を示します。SLM のみにアクセスする最適化されたロードおよびストア命令のシーケンスを使用して測定します。
    • GTI ルーフ: GPU と残りの SoC 部分との間の最大帯域幅を示します。この推測値は、現在使用しているグラフィックス・ハードウェアの最大周波数を基にした解析式で計算されます。
    • DRAM ルーフ: 現在使用しているグラフィックス・ハードウェアで利用可能な DRAM メモリーの最大帯域幅を示します。最適化されたロード命令のシーケンスを使用して、GPU キャッシュに収まらない配列を反復処理して測定します。

  • 水平線は、最適化なしではカーネルがパフォーマンスを向上できない、計算能力の上限を示します。
  • ドットは、マシンの最大能力を示す最上位のルーフラインを超えることはありません。すべてのカーネルがマシンの能力を最大限に利用できるわけではありません。
  • ドットと達成可能な最上位のルーフとの距離が遠いほど、パフォーマンス向上の可能性は高くなります。

GPU ルーフライン・グラフは、CPU ルーフライン・グラフをベースにしていますが、いくつか違いがあります。

  • グラフのドットは、OpenCL*、OpenMP*、レベルゼロ、および SYCL* カーネルに対応していますが、CPU バージョンでは個々のループに対応します。

  • 表示される情報とコントロールの一部 (スレッド/コア数など) は、GPU ルーフラインにはありません。詳細については次の表を参照してください。

  • GPU ルーフライン・グラフを使用すると、複数のメモリーレベルでの 1 つのカーネルの演算強度を表示できます。これには、カーネルを表すドットをダブルクリックするか、選択して [Enter] キーを押します。ルーフライン・グラフに表示されるドットは、演算強度を計算するため使用されるさまざまなメモリーレベルに対応します。ドットにマウスをホバーすると演算強度が分かります。グラフの特定のドットを表示/非表示にするには、[Memory Level (メモリーレベル)] ドロップダウン・フィルターを使用します。

インテル® Advisor GPU ルーフライン・グラフ

コマンドライン・インターフェイスから GPU ルーフラインの調査パースペクティブを実行

advisor のコマンドライン・インターフェイスを使用して GPU ルーフラインの調査パースペクティブを実行するには、次のコマンドを使用します。

advisor --collect=roofline --profile-gpu --project-dir=./advi --search-dir src:p=./advi –- myApplication
  1. Survey (サーベイ) 解析を使用して、アプリケーションのループ/関数のパフォーマンス・メトリックを収集します。
    advisor --collect=survey --profile-gpu --project-dir=./advi --search-dir src:p=./advi –- myApplication
  2. Characterization (特性) 解析を使用して浮動小数点演算データを収集します。
    advisor --collect=tripcounts --no-trip-counts --flop --profile-gpu --project-dir=./advi --search-dir src:p=./advi –- myApplication

    説明:

    • no-trip-counts特性解析中にトリップカウントの収集を無効にします。
    • flop特性解析中に AVX-512 プラットフォームの浮動小数点演算と整数演算、メモリー・トラフィック、およびマスク利用率メトリックに関連するデータを収集します。

このコマンドは、2 つの解析を 1 つずつ実行するバッチモードです。

  1. サーベイ解析では、ループ/関数の実行時間データを収集し、L3、SLM、GTI トラフィックを測定します。
  2. 特性解析では、マスク使用率を考慮した浮動小数点演算と整数演算、および CARM メモリー・トラフィックを収集し、アプリケーションの演算強度とパフォーマンスを測定します。

インタラクティブなルーフライン・グラフで、ハードウェアによって課せられたパフォーマンス上限に対するアプリケーションが達成しているパフォーマンスを表示するには、収集された結果をインテル® Advisor GUI で開くか、次のコマンドでインタラクティブな HTML ルーフライン・レポートを生成します。

advisor --report=roofline --profile-gpu --report-output=./advi/advisor-roofline.html --project-dir=./advi

ここで、report-output オプションは、インテル® Advisor が生成したレポートを保存するディレクトリーと HTML ファイルを指定します。

デフォルトでは、インテル® Advisor は FLOAT ルーフライン・グラフを生成します。INT ルーフライン・グラフに切り替えるには、コマンドに –-data-type=int オプションを追加します。

CLI レポートの生成の詳細については、インテル® Advisor ユーザーガイドの該当するセクションを参照するか、ターミナルで次のコマンドを実行してください。
advisor --help report

インテル® Advisor は、次のコマンドで読み取り専用の結果スナップショットを作成できます。

advisor --snapshot --project-dir=./advi --pack --cache-sources --cache-binaries -- /tmp/my_proj_snapshot

次にすることは?

GPU Roofline Summary (GPU ルーフライン・サマリー) (GUI でのみ利用可能) を使用して、CPU と GPU デバイス実行されるアプリケーションのパフォーマンスを比較します。

GPU Code Analytics (GPU コード解析) ペインで、カーネルのパフォーマンス・メトリックと、適用可能な最適化手順に関する推奨事項を調査します。

関連情報

インテル® Advisor のクックブックの GPU にオフロードするコード領域を特定し GPU の使用状況を可視化 で GPU 使用率を最適化するユースケースを調べます。