インテル® VTune™ プロファイラー・ユーザーガイド

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® X e MAX グラフィックス GPU を使用する場合に利用できます。
  6. [開始] をクリックして解析を実行します。

コマンドラインから実行

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

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

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

複数 GPU の解析

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

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

解析結果

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

特性化解析の設定

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

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

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

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

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

ソース解析の設定

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

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

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

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

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

[制御フロー] グループ

ip レジスターを明示的に変更する ifelseendifwhilebreakcontcallcallaretgotojmpibrdbrcjoinhalt および movadd 命令

[送信 & 待機] グループ

sendsendssendcsendscwait

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

ビット操作 (整数型のみ): andorxor など

算術演算: mulsubavgfrcmacmachmadmadm

ベクトル算術演算: linedp2dp4 など

拡張数学演算

[その他] グループ

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

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

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

データを表示

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

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

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

サポート対象

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

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

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

Linux*

Windows*

Linux*

Windows*

データ収集

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

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

データ表示

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

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

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

はい

はい

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

はい

はい

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

はい

はい

DPC++ GPU プロファイルの利用例については、クックブックのレシピ「GPU 上で実行する DPC++ アプリケーションのプロファイル」(英語) をご覧ください。

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

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

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

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

Windows*

API のバージョン

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

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

はい

デバイス側の計算タスク

いいえ

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

いいえ

関連情報