コマンドラインから GPU 間のパフォーマンスのモデル化を実行

インテル® Advisor を使用すると、CPU バージョンを指定することなく、別の GPU デバイスのグラフィックス処理ユニット (GPU) で実行されている SYCL*、OpenCL*、OpenMP* target アプリケーションのパフォーマンスをモデル化できます。これには、オフロードのモデル化パースペクティブの GPU - GPU 間モデル化ワークフローを実行します。

GPU 間のモデル化は、GPU 計算カーネルのみを解析し、CPU で実行されるアプリケーション領域を無視します。その結果、モデル化のフローにいくつかの変更が加えられています。

ワークフロー

GPU - GPU 間のパフォーマンスのモデル化ワークフローは、CPU - GPU 間のモデル化と似ており、次の手順が含まれます。

  1. サーベイ解析では、インテル® グラフィックスで実行されている GPU 対応カーネルのハードウェア・カウンターを使用して、実行時間、キャッシュ、および GTI トラフィックを測定します。
  2. 特性化解析では、インテル® グラフィックスで実行されているカーネルの各種 GPU 命令を個別にカウントして、計算操作数を測定します。例えば、SQRT、EXP、DIV などのハードウェアで実装される 32 ビット数学関数向けに個別のカウンターを実装しています。
  3. パフォーマンスのモデル化解析では、収益性の有無にかかわらず、ターゲット GPU デバイス上のすべてのカーネルのパフォーマンスをモデル化します。

メモリー・オブジェクトを正確にトレースするには、GPU カーネルを oneAPI レベルゼロ・バックエンドで実行する必要があります。

必要条件

  1. GPU カーネル解析向けにシステムを設定します。
  2. 自動スクリプトを使用してインテル® Advisor の環境変数を設定し、インテル® Advisor のコマンドライン・インターフェイス (CLI) 利用できるようにします。

GPU - GPU 間のパフォーマンスのモデル化を実行

コマンドラインから GPU - GPU 間のパフォーマンスをモデル化するには、次のいずれかの方法を行います。

インテル® Advisor のグラフィカル・ユーザー・インターフェイス (GUI) から GPU - GPU 間のオフロードのモデル化を実行することもできます。GUI からオフロードのモデル化パースペクティブを実行を参照してください。

上記のいずれかの方法でオフロードのモデル化を実行した後、インテル® Advisor のグラフィカル・ユーザー・インターフェイス (GUI)、コマンドライン・インターフェイス (CLI)、または対話型 HTML レポートで結果を表示できます。例えば、対話型 HTML レポートは次のようになります。

GUI での GPU から GPU へのオフロードのモデル化サマリー

ヒント

MPI アプリケーションを解析する場合、事前設定されたコマンドラインを生成し、コピーして 1 つずつ実行できます。詳細については、事前定義されたコマンドラインを生成を参照してください。

手法 1: 事前定義された収集を使用する

事前設定された GPU - GPU 間のモデル化を実行するには、--collect=offload アクションとともに --gpu オプションを使用します。収集を実行すると、GPU 上のデータ収集とパフォーマンスのモデル化のステップが順番に実行されます。特定の解析とオプションは、収集に指定した精度レベルによって異なります。

以下のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能形式へのパスと名前に置き換える必要があります。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

例えば、GPU - GPU 間のモデル化をデフォルト (中) 精度レベルで実行するには、次のコマンドを使用します。

収集の進行状況と、実行された解析のコマンドがターミナル/コマンドプロンプトに出力されます。収集が完了すると、結果のサマリーが表示されます。

異なる精度レベルを指定して、実行する解析とオプションを変更することもできます。利用可能な精度レベルは、low (低)medium (中) (デフォルトt)、および high (高) です。

例えば、high (高) 精度レベルの解析を実行します。

advisor --collect=offload --accuracy=high --gpu --project-dir=./advi_results -- ./myApplication

それぞれの精度レベルで実行されるコマンドを確認する場合、--dry-run--gpu オプションを指定して収集を実行します。コマンドはターミナルまたはコマンドプロンプトに出力されます。

それぞれの精度レベルについては、コマンドラインでのオフロードのモデル化精度レベルを参照してください。

手法 2: 事前定義の収集を使用

個別のコマンドでそれぞれのオフロードのモデル化解析を実行し、アプリケーションのデータを収集してパフォーマンスをモデル化できます。GPU - GPU 間のモデル化を有効にするには、実行するそれぞれの解析で --profile-gpu オプションを使用します。

次のワークフローの例について考えてみます。この例では、サーベイ、トリップカウント、および FLOP 解析を実行して GPU で実行されるアプリケーションをプロファイルし、パフォーマンスのモデル化を実行して、インテル® Iris® Xe MAX グラフィックス (gen12_dg1 設定) でのパフォーマンスをモデル化します。

以下のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能形式へのパスと名前に置き換える必要があります。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

Linux*:

  1. サーベイ解析を実行します。
    advisor --collect=survey --profile-gpu --project-dir=./advi_results -- ./myApplication
  2. データ転送予測によるトリップカウント & FLOP 解析を実行します。
    advisor --collect=tripcounts --profile-gpu --flop --target-device=gen12_dg1 --data-transfer=light --project-dir=./advi_results -- ./myApplication
  3. パフォーマンスのモデル化解析を実行します。
    advisor --collect=projection --profile-gpu --config=gen12_dg1 --project-dir=./advi_results

    結果のサマリーがコマンドプロンプトに出力されます。

Windows*:

  1. サーベイ解析を実行します。
    advisor --collect=survey --project-dir=.\advi_results -- myApplication.exe
  2. データ転送とトリップカウント & FLOP 解析を実行します。
    advisor --collect=tripcounts --profile-gpu --flop --stacks --target-device=gen12_dg1 --data-transfer=light --project-dir=.\advi_results -- myApplication.exe
  3. パフォーマンスのモデル化解析を実行します。
    advisor --collect=projection --profile-gpu --config=gen12_dg1 --project-dir=.\advi_results

    結果のサマリーがコマンドプロンプトに出力されます。

手法 3: Python* スクリプトを使用

インテル® Advisor には、インテル® Advisor Python* API を使用してオフロードのモデル化を行う 3 つのスクリプト、run_oa.pycollect.pyanalyze.py が用意されています。スクリプトは、インテル® Advisor の advisor-python コマンドライン・インターフェイス、またはローカルの Python* 3.6 または 3.7 を使用して実行できます。

GPU - GPU 間のモデル化を有効にするには、実行するそれぞれのスクリプトで --gpu オプションを使用します。

このスクリプトは MPI アプリケーションをサポートしません。MPI アプリケーションを解析するには、インテル® Advisor CLI で事前定義された収集を行います。

スクリプトとインテル® Advisor CLI を組み合わせてオフロードのモデル化を実行することもできます。例:

次の例に示す、Python スクリプトを使用するいくつかの典型的なシナリオを検討してください。

以下のコマンドでは、コマンドを実行する前に myApplication をアプリケーションの実行可能形式へのパスと名前に置き換える必要があります。アプリケーションが引数を必要とする場合、実行可能ファイル名のにそれらを指定します。

例 1run_oa.py スクリプトを実行して、GPU 上のアプリケーションをプロファイルし、インテル® Iris® Xe MAX グラフィックス (gen12_dg1 設定) のパフォーマンスをモデル化します。

結果のサマリーがコマンドプロンプトに出力されます。

例 2collect.py を実行して、GPU 上のアプリケーションをプロファイルし、インテル® Iris® Xe MAX グラフィックス (gen12_dg1 設定) のパフォーマンスをモデル化するため analyze.py を実行します。

結果を表示

インテル® Advisor で解析が完了すると、結果は次の形式で取得できます。

例えば、インテル® Advisor GUI の結果は次のようになります。

GUI での GPU から GPU へのオフロードのモデル化サマリー

対話型の HTML レポートを調べるには、事前に収集された GPU ルーフライン・レポートをダウンロード (英語) して、結果と構造を調査できます。

利用可能な結果形式の詳細についてはオフロードのモデル化の結果を調査を、GPU - GPU 間のモデル化の結果の詳細については GPU - GPU 間のモデル化によるパフォーマンス・ゲインを調査を参照してください。

関連情報