GPU 計算/メディア・ホットスポット解析 (プレビュー)

最も時間のかかる GPU カーネルを解析し、GPU ハードウェア・メトリックをベースに GPU の使用状況を特徴付け、メモリー・レイテンシーや非効率なカーネル・アルゴリズムによって引き起こされるパフォーマンスの問題を特定して、命令タイプごとの GPU 命令周波数を解析します。

これは、プレビュー機能です。プレビュー機能は、正式リリースに含まれるかどうかは未定です。有用性に関する皆さんからのフィードバックが、将来の採用決定の判断に役立ちます。プレビュー機能で収集されたデータは、将来のリリースで下位互換性が保証されません。

GPU 計算/メディア・ホットスポット解析を使用して以下を行います。

GPU 計算/メディア・ホットスポット解析は、GPU オフロード解析を行った後の次のステップとして実行すると良いでしょう。

動作の仕組み: インテル® グラフィックスのレンダーエンジンとハードウェア・メトリック

GPU とは、小さなコアアレイ (実行ユニット (EU)) でグラフィックスや計算処理を行う高度な並列マシンです。各 EU は、複数の軽量なスレッドを同時に実行します。スレッドの 1 つが実行されると、ほかのスレッドがメモリーなどからのデータを待機するためストールしていても、そのストールを隠蔽することができます。

GPU の性能を最大限に利用するため、アプリケーションはできるだけ多くのスレッドをスケジュールして、アイドルサイクルを最小限に抑えようとします。グラフィックスと汎用計算 GPU アプリケーションでは、ストールを最小限にすることも非常に重要です。

インテル® VTune™ プロファイラーは、インテル® グラフィックスのハードウェア・イベントを監視し、サンプリング期間の GPU リソースの使用状況に関するメトリックを表示します。例えば、EU がアイドル状態、ストール状態、アクティブ状態であったサイクルの比率や、メモリーアクセスとほかの機能ユニットに関する統計情報などが分かります。インテル® VTune™ プロファイラーで GPU カーネルの実行をトレースすると、GPU メトリックで各カーネルをアノテート (注釈) できます。

以下のスキームは、インテル® グラフィックス Gen9 (英語) のさまざまな処理においてインテル® VTune™ プロファイラーによって収集されるメトリックを示します。

GPU メトリックは、GPU ハードウェアが程度効率的に利用されているか、そしてパフォーマンス向上のため改善の余地があるか特定するのに役立ちます。メトリックの多くは、サンプリング中のすべてのサイクルに対して GPU 機能ユニットが特定の状態であったサイクルの比率で表されます。

解析の設定

解析を実行

  1. ツールバーの (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックして、[解析の設定] ウィンドウを開きます。

  2. [どのように] ペインのタイトルバーをクリックします。[解析] ツリーを開き、[アクセラレーター] グループから [GPU 計算/メディア・ホットスポット (プレビュー)] 解析を選択します。この解析は、GPU 使用データを収集し、GPU タスクのスケジュールを解析して、アプリケーションが CPU 依存であるか GPU 依存であるかを識別するように事前設定されています。

    システムに複数のインテル製 GPU が接続されている場合、選択した GPU または接続されているすべての GPU で解析を実行します。詳細については、「複数の GPU の解析」を参照してください。

  3. 解析モードの選択と設定します。

  4. オプションで、GPU オフロード解析でパフォーマンスが重要 (ストールまたは時間がかかる) と特定したカーネルに解析を集中し、プロファイルの対象となる計算タスクとして指定します。必要であれば、それぞれのカーネルのサンプリング間隔 (カーネル数単位) である [注目する計算タスク] の [インスタンス・ステップ] を変更します。このオプションは、プロファイルのオーバーヘッドを軽減するのに有効です。
  5. (オプション) 電力解析でデータを収集するには、[電力使用を解析] オプションをオンにします。この機能は、Linux* 環境でアプリケーションをプロファイルし、ディスクリートのインテル® Iris® Xe MAX グラフィックス GPU を使用する場合に利用できます。
  6. インターコネクト (Xe リンク) 接続を備えた GPU では、[Xe リンクの使用を解析] オプションを使用して、GPU インターコネクト (Xe リンク) 間のトラフィックを調べます。この情報は、GPU 間のデータフローと GPU 間のインターコネクトの使用状況を評価するのに役立ちます。

  7. [開始] をクリックして解析を実行します。

コマンドラインから実行

コマンドラインから GPU 計算/メディア・ホットスポット解析を実行するには、次のコマンドを入力します。

vtune -collect gpu-hotspots [-knob <knob_name=knob_option>] -- <target> [target_options]

下部の [コマンドライン] ボタンを使用して、この設定のコマンドラインを生成できます。

複数 GPU の解析

システムに複数のインテル製 GPU が接続されている場合、インテル® VTune™ プロファイラーは接続されているすべてのアダプターを [ターゲット GPU] プルダウンメニューで識別します。次のガイドに従ってください。

解析が完了すると、インテル® VTune™ プロファイラーは [サマリー] ウィンドウにタイル情報を含む GPU ごとのサマリー結果を表示します。

解析結果

GPU 計算/メディア・ホットスポット解析がデータ収集を完了すると、[サマリー] ウィンドウにメトリックが表示されます。

インテル® Arc™ Alchemist (DG2) 以降のインテル® Xe グラフィックス製品ファミリーと以降の世代では、従来の用語から GPU アーキテクチャーの用語が変更されています。用語変更の詳細と、従来のコンテンツとの対応については、「インテル® Xe グラフィックスの GPU アーキテクチャー用語」 (英語) を参照してください。
複数 GPU の結果を解析

複数のインテル GPU で実行されているアプリケーションをプロファイルすると、GPU 計算/メディアホットスポット解析の [サマリー] ウィンドウに、同じインテル® マイクロアーキテクチャーの GPU でグループ化された結果が表示されます。各アーキテクチャー・グループには、そのグループのメトリック情報が含まれます。

アーキテクチャー・グループごとに、次のメトリックの値を確認できます。

アーキテクチャー・グループ内のすべてのアダプターに対し、XVE アレイのアクティブ/ストール/アイドルを示すメトリック値を確認できます。

GPU アダプターの命名規則

GPU プロファイル解析の結果は、エイリアスにより GPU アダプターを参照します。

GPU トポロジー図

システムに接続されている複数のインテル GPU (またはマルチスタック GPU) 全体の GPU 解析を実行すると、[サマリー] ウィンドウに GPU トポロジー図の GPU 間のインターコネクトが表示されます。この図には、システムに接続されている最大 2 つのソケットと 6 つの GPU 間の情報が示されています。

GPU トポロジー図には、ソケット (GPU 接続に使用) および GPU 間のインターコネクト (Xe リンク) 接続に関する情報が表示されます。GPU トポロジー図の GPU は、バスデバイス機能 (BDF) 番号で識別できます。

GPU スタックにマウスを移動すると、アクティブに使用されているリンク (緑色のハイライト表示) と対応する帯域幅メトリックが表示されます。

ここに示される情報を基に、転送される以下の平均データを確認します。

Xe リンク利用率解析

Xe リンクを備えた GPU では、(解析を実行する前に) インターコネクト (Xe リンク) の使用状況を解析するオプションを確認すると、[サマリー] ウィンドウに GPU インターコネクト (Xe リンク) を介して収集された帯域幅とトラフィック・データを表示するセクションが含まれています。この情報を GPU トポロジー図と併用して、GPU 間のトラフィック分散のインバランスを検出します。一部のリンクがほかのリンクよりも利用頻度が高い場合、その理由を確認します。

X<sup>e</sup> リンク利用率解析
帯域幅のデータを時間経過で解析

[サマリー] ウィンドウの Xe リンク利用率と、[プラットフォーム] ウィンドウには、経時的な帯域幅データが表示されます。

この情報を使用して、次のことを行うことができます。

特性化解析の設定

特性化設定オプションを使用して、次のことを行います。

[特性化] ラジオボタンを選択すると、設定セクションが展開され、追加オプションが表示されます。

[特性化] ドロップダウン・メニューには、プラットフォーム固有の事前定義された GPU メトリックが用意されています。動的命令カウントを除くすべてのプリセットは、実行ユニット (EU) のアクティビティー・データを収集します。EU アレイアクティブ、EU アレイストール、EU アレイアイドル、計算スレッドの開始、およびコア周波数 (それぞれに追加メトリックがあります)。

GPU 計算/メディア・ホットスポット解析は、Windows*、Linux* および Android* ターゲットの特性化モードで実行できます。このモードで解析を実行するには、root/管理者権限が必要です。

特性化解析では、追加のデータを収集することもできます。

ソース解析の設定

ソース解析では、インテル® VTune™ プロファイラーは、GPU カーネルのメモリーアクセスによって引き起こされる、パフォーマンスが重要な基本ブロックを特定するのを支援します。

[ソース解析] ラジオボタンを選択すると、[設定] ペインにドロップダウン・メニューが表示され、解析する問題のタイプを指定するプロファイル・モードを選択できます。

[基本ブロック・レイテンシー] または [メモリー・レイテンシー] プロファイル・モードでは、GPU 計算/メディア・ホットスポット解析は次のメトリックを使用します。

[命令数] プロファイル・モードを有効にすると、インテル® VTune™ プロファイラーはカーネルにより実行された命令の内訳を次のグループで表示します。

命令数プロファイル・モード

[制御フロー] グループ

ip レジスターを明示的に変更する if、else、endif、while、break、cont、call、calla、ret、goto、jmpi、brd、brc、join、halt および mov、add 命令

[送信 & 待機] グループ

send、sends、sendc、sendsc、wait

[Int16 & HP Float] | [Int32 & SP Float] | [Int64 & DP Float] グループ

ビット操作 (整数型のみ): and、or、xor など

算術演算: mul、sub などavg、frc、mac、mach、mad、madm

ベクトル算術演算: line、dp2、dp4 など

拡張数学演算

[その他] グループ

nop を含むほかのすべての操作。

[命令数] モードでは、インテル® VTune™ プロファイラーは、次の実行された命令のウェイトを合計して計算された、[1 秒あたりの操作数] メトリックも提供します。

操作 (演算) のタイプはデスティネーション・オペランドのタイプにより決定されます。

データを表示

インテル® VTune™ プロファイラーは解析を実行して、[GPU 計算/メディア・ホットスポット] ビューポイントでデータを開き、次のウィンドウにさまざまなプラットフォーム・データを表示します。

oneAPI レベルゼロ API を使用する SYCL* アプリケーションのサポート

このセクションでは、GPU 計算/メディア・ホットスポット解析のバックエンドで OpenCL* または oneAPI レベルゼロ API (英語) を実行する SYCL* アプリケーションのサポートについて説明します。インテル® VTune™ プロファイラーは、oneAPI レベルゼロ API のバージョン 0.91.10 をサポートします。

サポート対象

バックエンドで OpenCL* を使用する SYCL* アプリケーション

バックエンドでレベルゼロを使用する SYCL* アプリケーション

オペレーティング・システム

Linux*

Windows*

Linux*

Windows*

データ収集

インテル® VTune™ プロファイラーは、GPU 計算タスクと GPU 計算キューを収集して表示します。

インテル® VTune™ プロファイラーは、GPU 計算タスクと GPU 計算キューを収集して表示します。

データ表示

インテル® VTune™ プロファイラーは、収集された GPU HW トリックを特定のカーネルにマップし、それらを図に表示しま。

インテル® VTune™ プロファイラーは、収集された GPU HW トリックを特定のカーネルにマップし、それらを図に表示しま。

ホスト側の API 呼び出しを表示

はい

はい

計算タスクのソース・アセンブラー

はい

はい

GPU コードのインストルメント ([ソース解析] オプション、または [動的命令カウント] 特性化オプション)

はい

はい

GPU 上で実行される SYCL* アプリケーションのプロファイルの利用例については、クックブックのレシピ「GPU 上で実行する SYCL* アプリケーションのプロファイル」を参照してください。

DirectX* アプリケーションのサポート

このセクションでは、CPU ホストで動作する Microsoft® DirectX* アプリケーションをトレースする GPU 解析で利用可能なサポートについて説明します。このサポートは、アプリケーションを起動モードでのみ利用できます。

サポート対象 DirectX* アプリケーション

オペレーティング・システム

Windows*

API のバージョン

DXGI、Direct3D 11、Direct3D 12、Direct3D 12 上の 11

ホスト側の API 呼び出しを表示

はい

ダイレクト・マシンラーニング (DirectML) API

はい

デバイス側の計算タスク

いいえ

計算タスクのソース・アセンブラー

いいえ

関連情報