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

GPU オフロード解析

プラットフォーム上の各種 CPU と GPU コアの実行を調査し、CPU と GPU のアクティビティーを関連付けて、アプリケーションが GPU 依存か CPU 依存かを特定します。

DPC++、インテル® メディア SDK および OpenCL* ソフトウェア・テクノロジーをサポートし、レンダリング、ビデオ処理、および計算に GPU (グラフィックス処理ユニット) を使用するアプリケーションの GPU オフロード解析を実行します。

このツールは、システム全体のすべてのコアクロックを自動的に調整し、同じ時間進行で GPU ベースのワークロードと CPU ベースのワークロードを解析できるようにします。

この解析は以下を可能にします。

GPU オフロード解析では、インテル® VTune™ プロファイラーは CPU と GPU 両方で実行されるコードをインストルメントします。構成の設定に応じて、インテル® VTune™ プロファイラーは、GPU ハードウェアの効率と解析の次のステップに関する指標となるパフォーマンス・メトリックを提供します。

GPU オフロード解析の側面

デフォルトでは、GPU オフロード解析により、[GPU 利用率] オプションが有効になり、GPU ビジーを経時的に調査して、アプリケーションが CPU 依存であるか、GPU 依存であるかが分かります。[グラフィックス] ウィンドウで [タイムライン] ビューを調べると、次のことが分かります。

これらの動作が確認できる場合、アプリケーションは GPU 依存であると考えられます。

ビジー間隔のアイドル時間が長く、その間 CPU がビジーとなる場合、アプリケーションは CPU 依存であると言えます。

しかし、このような明確な状況はまれであるため、詳細を解析してすべての依存関係を明らかにする必要があります。例えば、GPU エンジンの使用がシリアル化されている場合 (GPU エンジンがビデオ処理とレンダリング処理を交互に実行するなど)、誤って GPU 依存と見なしてしまう可能性があります。このケースでは、CPU で実行されるアプリケーションが原因で GPU 上で非効率なスケジューリングが生じています。

解析の設定

Windows* システムで、一般的な GPU の使用状況を経時的に監視するには、管理者としてインテル® VTune™ プロファイラーを実行します。

解析を実行

  1. [解析の設定] ウィンドウを開きます。[ようこそ] 画面 (スタンドアロン・バージョン) の ボタン、または [解析の設定] (Visual Studio* IDE) ツールバーボタンをクリックします。

  2. [どのように] ペインから解析ツリーを開き、[アクセラレーター] グループから GPU オフロード解析を選択します。

    GPU オフロード解析は、GPU 利用データを収集し、プロセッサー・グラフィックス・イベントを収集するように事前設定されています (基本計算プリセット)。

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

  3. GPU 解析オプションを設定します。

    • [GPU プログラミング API をトレース] オプションを使用すると、インテル® プロセッサー・グラフィックスで実行されている DPC++、レベルゼロ、OpenCL*、およびインテル® メディア SDK プログラムを解析できます。このオプションは、CPU 側でアプリケーションのパフォーマンスに影響する可能性があります。

    • [ホットスタックを収集] オプションを使用して、CPU で実行されるコールスタックを解析し、クリティカル・パスを特定します。また、GPU 計算タスクの CPU 側のスタックを調査し、GPU オフロードの効率を調査できます。結果が表示されたら、[フィルター] バーで [コールスタック] モードを選択して、SYCL*、レベルゼロ。または OpenCL* ランタイムのコールスタックをソートします。

    • [CPU - GPU 帯域幅を解析] オプションを使用して、タイムライン上のハードウェア・イベントに基づくデータ転送を表示します。このタイプの解析には、インテル・サンプリング・ドライバーがインストールされている必要があります。

    • GPU パフォーマンスの詳細を表示でハードウェアの使用効率を推測し、次のステップに役立つメトリック (プロセッサー・グラフィックス・イベント解析に基づく) を取得します。次のメトリックに関する情報が収集されます。

      • EU アレイのメトリックは、GPU コアアレイの内訳を示します。

        • アクティブ: すべてのコアで命令の実行に費やされたすべてのサイクル数の正規化された合計を示します。式:

        • ストール: すべてのコアがストールしたすべてのサイクル数の正規化された合計を示します。少なくとも 1 つのスレッドがロードされているが、コアがストールしている状態です。式:

        • アイドル: コアにスレッドがスケジュールされなかったすべてのサイクル数 (すべてのコア分) の正規化された合計を示します。式:

      • EU スレッド占有率メトリックは、スロットにスケジュールされたスレッドがある場合の、すべてのコアとスレッドスロットの正規化された合計サイクル数を示します。
      • 計算スレッド開始メトリックは、すべての EU で計算ワークを開始したスレッド数を示しています。

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

コマンドラインから実行

次のコマンドを使用します。

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

任意の解析設定のコマンドラインを生成するには、ウィンドウの下にある [コマンドライン] ボタンをクリックします。

GPU オフロード解析がデータ収集を完了すると、[サマリー] ウィンドウにメトリックが表示されます。


GPU オフロード解析の [サマリー] ウィンドウ
次のステップに向けた [推奨事項] とガイドも表示されます。

複数 GPU の解析

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

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

ホストとデバイス間のデータ転送解析

CPU ホストと GPU デバイス間のデータ転送効率を理解するには、[サマリー] と [グラフィックス] ウィンドウでメトリックを確認してください。

[サマリー] ウィンドウには、計算タスクに費やされた合計時間と、タスクごとの実行時間が表示されます。時間差は、ホストとデバイス間のデータ転送に費やされた時間を表します。実行時間がデータ転送時間よりも短い場合、オフロードスキーマの最適化が有効であることを表します。

[サマリー] ウィンドウで、ホスト - デバイス転送デバイス - ホスト転送 などのオフロードのコストを示すメトリックを確認します。これらのメトリックは、パフォーマンスを制限する不要なメモリー転送を特定するのに役立ちます。

[グラフィックス] ウィンドウで、それぞれの計算タスクの合計時間を示す [デバイス操作タイプによる合計時間] カラムを参照します。


データ転送メトリック

合計時間は以下のように分類できます。

この分類は、データ転送と GPU 実行時間のバランスを理解するのに役立ちます。[グラフィックス] ウィンドウには、[転送サイズ] セクションに計算タスクごとのホストとデバイス間のデータ転送サイズも表示されます。

不適切なオフロードスキーマを持つ計算タスクは、スキーマの改善を促す詳しい説明とともにハイライト表示されます。



GPU の電力消費量を調査

Linux* 環境で、インテル® Iris® Xe MAX グラフィックス・ディスクリート GPU で、GPU オフロード解析を実行すると、GPU デバイスで消費されるエネルギーに関連する情報を確認できます。この情報を収集するには、[解析の設定] で [電力使用を解析] オプションをオンにしてください。

電力消費メトリックは、Windows* マシンでインテル® Iris® X e MAX グラフィックスをスキャンする GPU プロファイル解析では表示されません。

解析が完了したら、結果に示されるこれらの電力消費データを参照してください。

[グラフィックス] ウィンドウで、計算タスクごとにグループ化されたグリッドの [電力消費] カラムを確認します。このカラムをソートして、最も電力を消費した GPU カーネルを特定します。この情報は、タイムラインにもマッピングされていることを確認できます。

電力使用のチューニング

最も電力を消費する GPU カーネルを検出するには、適切な電力効率を得るため、上位のエネルギー・ホットスポットをチューニングすることから開始します。

処理時間のチューニング

GPU 処理時間も最適化を目的とする場合、カーネルごとの電力消費メトリックを確認して、パフォーマンス時間と電力使用量のトレードオフを観察します。

この比較を容易にするため、[合計時間] の隣にある [電飾消費] カラムに移動します。

計算タスクによる GPU の電力消費

電力使用量と処理時間には直接的な相互関係はないことに気づくかもしれません。最も高速に計算を行うカーネルは、エネルギー消費量が最小であるカーネルとは異なる場合があります。電力使用量の値が大きいほど、ストール/待機期間が長いかどうかを確認します。

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

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

サポート対象

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

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

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

Linux*

Windows*

Linux*

Windows*

データ収集

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

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

データ表示

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

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

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

はい

はい

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

はい

はい

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

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

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

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

Windows*

API のバージョン

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

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

はい

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

はい

デバイス側の計算タスク

いいえ

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

いいえ

関連情報