異なる GPU デバイスの GPU アプリケーション・パフォーマンスをモデル化

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® Advisor Cookbook」の「Model GPU Application Performance for a Different GPU Device」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


バージョン: 2021
更新日: 2021 年 9 月 27 日

このレシピでは、インテル® Advisor の Offload Modeling パースペクティブを実行して、異なる GPU アーキテクチャー上のアプリケーション・パフォーマンスを予測する方法を説明します。

パフォーマンス予測は、次世代の GPU アーキテクチャー向けに次のステップを決定する上で重要な役割を果たします。このような場合、CPU と GPU の実行フローには本質的な違いがあるため、CPU から GPU へのモデル化よりも GPU から GPU へのモデル化のほうが精度は高くなります。

このレシピでは、インテル® Advisor を使用して、Offload Modeling パースペクティブの GPU から GPU へのモデル化フローで DPC++ アプリケーション・パフォーマンスを解析し、アプリケーションをインテル® Iris® Xe MAX グラフィックス (gen12_dg1 構成) にオフロードする利点を予測します。

手順:

  1. 必要条件
  2. GPU から GPU へのパフォーマンスのモデル化を実行
  3. ターゲット GPU 上でのパフォーマンス・スピードアップの検証
  4. 別の方法

コンポーネント

ここでは、このレシピで示す結果を得るために使用したハードウェアとソフトウェアをリストします。

必要条件

  1. oneAPI ツールの環境変数を設定します。
    $ source <oneapi-install-dir>/setvars.sh
    
  2. GPU カーネルを解析するため、システムを設定 (英語) します。
  3. マンデルブロ・アプリケーションの DPC++ 実装をビルドします。
    $ cd mandelbrot/ && mkdir build && cd build && cmake .. && make
    

GPU から GPU へのパフォーマンスのモデル化を実行

インテル® Advisor のコマンドライン・インターフェイス (CLI)、Python* スクリプト、またはインテル® Advisor のグラフィカル・ユーザー・インターフェイス (GUI) を使用して GPU から GPU へのモデル化を実行できます。

このセクションでは、Offload Modeling パースペクティブの特別なコマンドライン収集プリセットと –gpu オプションを使用して、1 つのコマンドで GPU から GPU へのモデル化のすべてのパースペクティブを実行します。

$ advisor --collect=offload --project-dir=./mandelbrot-advisor --gpu --config=gen12_dg1 -- ./mandelbrot

注:
–config オプションで異なる値を指定することで、モデル化するターゲット GPU を変更できます。詳細とオプションの一覧は、config (英語) を参照してください。

このコマンドは、デフォルトの「medium」精度でパースペクティブを実行して、次の解析を 1 つずつ実行します。

  1. Survey 解析を実行して、ベースライン・パフォーマンス・データを収集します。
  2. Characterization 解析を実行して、トリップカウントと FLOP を収集し、データ転送をモデル化します。
  3. ベースラインのインテル® UHD グラフィックス P630 デバイスからターゲットのインテル® Iris® Xe MAX グラフィックスへのパフォーマンスをモデル化します。

重要: コマンドライン収集プリセットは MPI アプリケーションをサポートしていません。MPI アプリケーションを解析 (英語) するには、個別に解析を実行する必要があります。

解析が完了すると、結果のサマリーがターミナルに出力されます。インテル® Advisor の GUI で結果を確認することも、任意のウェブブラウザーでインタラクティブな HTML レポートを確認することもできます。

ターゲット GPU 上でのパフォーマンス・スピードアップの検証

このセクションでは、HTML を調査して GPU から GPU へのモデル化の結果を理解します。CLI から、または Python* スクリプトを使用して Offload Modeling を実行すると、HTML レポートが自動生成され、./mandelbrot-advisor/e000/report/advisor-report.html に保存されます。このレポートは任意のウェブブラウザーで開くことができます。

注:
このインタラクティブな HTML レポートでは、左上のドロップダウンを使用して、Offload Modeling と GPU Roofline Insights パースペクティブの結果を切り替えることができます。

[Summary] タブの [Top Metrics] ペインと [Program Metrics] ペインを確認してパフォーマンス・ゲインを理解します。

  • [Top Metrics] ペインは、マンデルブロ・アプリケーションの 1 つのコード領域を、ベースラインのインテル® UHD グラフィックス P630 GPU デバイスからターゲットのインテル® Iris® Xe MAX グラフックス GPU デバイスへオフロードすることで、平均 8.3 倍のスピードアップが得られることを示しています。
  • [Program Metrics] ペインは、ベースライン GPU 上で測定された実行時間とターゲット GPU 上での予測実行時間を示しています。

    GPU から GPU へのモデル化: サマリーレポート

[Summary][Accelerated Regions]、および [Source View] タブを利用して、オフロード領域に関する詳細を理解し、有用なメトリックとパフォーマンス・ゲインを調査できます。

[Accelerated Regions] タブは、オフロードコード領域の詳細な情報と、下部のペインでソースコードを提供します。ここでは、注目するオフロード領域の有用なさまざまなメトリックを調査できます。例えば、ベースライン GPU 上で実行するカーネルでは、測定された反復空間、スレッド占有率、SIMD 幅、ローカルサイズ、グローバルサイズなどのメトリックを調査します。

そして、ターゲット GPU では、パフォーマンスの問題、スピードアップ、再利用とデータ転送などの予測メトリックを調査します。

これらのメトリックの詳細な説明と解釈については、「アクセラレーター・メトリック」 (英語) を参照してください。

GPU から GPU へのモデル化: Accelerated Regions レポート

別の方法

インテル® Advisor のコマンドライン・インターフェイス (CLI)、Python* スクリプト、またはインテル® Advisor の GUI を使用して GPU から GPU へのモデル化を実行できます。

(Offload Modeling 収集プリセットの代わりに) インテル® Advisor の Python* スクリプトを実行

インテル® Advisor に同梱される専用の Python* スクリプトを使用して、GPU から GPU へのモデル化を実行します。これらのスクリプトは、インテル® Advisor の Python* API を使用して解析を実行します。

例えば、run_oa.py スクリプトと –gpu を使用して、次のように 1 つのコマンドでパースペクティブを実行します。

$ advisor-python $APM/run_oa.py ./mandelbrot-advisor --collect=basic --gpu --config=gen12_dg1 -- ./mandlebrot

注:
–config オプションで異なる値を指定することで、モデル化するターゲット GPU を変更できます。オプションの一覧は、config (英語) を参照してください。

run_oa.py スクリプトは、次の解析を 1 つずつ実行します。

  1. Survey 解析を実行して、ベースライン・パフォーマンス・データを収集します。
  2. Characterization 解析を実行して、トリップカウントと FLOP を収集し、データ転送をモデル化します。
  3. ベースラインのインテル® UHD グラフィックス P630 デバイスからターゲットのインテル® Iris® Xe MAX グラフィックスへのパフォーマンスのモデル化します。

重要: コマンドライン収集プリセットは MPI アプリケーションをサポートしていません。MPI アプリケーションを解析 (英語) するには、インテル® Advisor の CLI を使用します。

解析が完了すると、結果のサマリーがターミナルに出力されます。インテル® Advisor の GUI で結果を確認することも、任意のウェブブラウザーでインタラクティブな HTML レポートを確認することもできます。

(Offload Modeling 収集プリセットの代わりに) インテル® Advisor の GUI を実行

必要条件: マンデルブロ・アプリケーションのプロジェクトを作成 (英語) します。

インテル® Advisor の GUI で GPU から GPU へのモデル化を実行するには、次の操作を行います。

  1. [Perspective Selector] ウィンドウで [Offload Modeling] パースペクティブを選択します。
  2. [Analysis Workflow] ペインで以下を選択します。
    1. [Baseline Device] ドロップダウンから [GPU] を選択します。
    2. [Target Platform Model] ドロップダウンから [Xe LP Max] を選択します。

      GPU から GPU へのモデル化: 解析ワークフローの設定
    3. パースペクティブを実行します。

パースペクティブの実行が完了すると、GPU から GPU へのオフロードのモデル化の結果が右側のペインに表示されます。

要約

GPU から GPU へのモデル化では、ハードウェアがなくても、次世代の GPU 上でのアプリケーション・パフォーマンスをより正確に予測できます。Offload Modeling によって収集されるメトリックは、ベースライン GPU で実行するカーネルのパフォーマンスを理解するのに役立ちます。新しいインタラクティブな HTML レポートは GUI のような体験を提供し、Offload Modeling と GPU Roofline Insights パースペクティブを簡単に切り替えることができます。

関連情報


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex/ (英語) を参照してください。

関連記事