ウィンドウ: サマリー - GPU 解析

インテル VTune™ プロファイラーの GPU オフロード、または GPU 計算/メディア・ホットスポット・パフォーマンス解析の開始点として、[サマリー] ウィンドウを使用します。このウィンドウにアクセスするには、結果タブの [サマリー] サブタブをクリックします。

経過時間のメトリックを指標として、最適化前後の結果を比較するベースラインを求めます。マルチスレッド・アプリケーションでは、CPU 時間はすべてのアプリケーション・スレッドの CPU 時間の合計であるため、CPU 時間は経過時間とは異なります。

選択した GPU 解析タイプに応じて、[サマリー] ウィンドウでは次の統計情報を参照できます。

[クリップボードへコピー] ボタンをクリックして、選択したサマリーセクションの内容をクリップボードへコピーします。

GPU 利用率

システムがGPU 解析の要件を満たしている場合 (i915 ftrace イベント収集がサポートされる)、インテル® VTune™ プロファイラーは、少なくても 1 つの DMA パケットが実行されたすべてのエンジンの詳細な GPU 利用率解析データを表示します。デフォルトでは、インテル® VTune™ プロファイラーは 80% 未満の GPU 利用率をパフォーマンスの問題として設定します。次の例では、アプリケーション経過時間の 85.9% が GPU エンジンで使用されています。

GPU 利用率

GPU 解析に使用するターゲット・プラットフォームに応じて、[サマリー] ウィンドウの [GPU 利用率] には GPU エンジンによって使用された時間 (秒単位) が示されます。GPU エンジンは並列に動作することがあり、GPU エンジンが要した時間は必ずしもアプリケーションの経過時間と同じではありません。

GPU 時間データは経過時間メトリックに関連付けることができます。GPU 時間の値は、特定の GPU エンジンが実行された経過時間の割合を示します。GPU 時間が経過時間の大部分を占めている場合 、アプリケーションが GPU 依存であることは明白です。

システムが i915 ftrace イベント収集をサポートしていない場合、すべての GPU 利用率の統計は、ハードウェア・イベントをベースに計算され、レンダ―と GPGPU エンジンに属性化されます。

[サマリー] ビューには、ターゲット実行中の GPU エンジンごとの GPU ソフトウェア・キュー深度を予測するのに役立つ、[パケットキューの深度分布図] が示されます。

パケットキュー深度の分布図

理想的な目標は、キューに均等な負荷がかかり、キューの深度がゼロになるまでの時間を最小にして、GPU エンジンを効率良く使用することです。

ターゲット実行中の DMA パケット実行の概要については、[パケット持続時間の分布図] を確認します。

パケット持続期間の分布図

ドロップダウン・メニューからパケットタイプを選択し、それらのパケットが GPU 上でどの程度効率良く実行されているか確認します。持続期間が短いパケットカウント値を大きくするのが最適です。

パケットキューと実行に関する詳しい情報を得るには、[プラットフォーム] タブに切り替えて、タイムライン上の GPU ソフトウェア・キューを解析します。

OpenCL* アプリケーションでは、パフォーマンスの問題がある OpenCL* カーネルを特定するのに役立つ [最もホットな GPU 計算タスク] セクションを調査します。

最もホットな GPU 計算タスク

パフォーマンス問題の詳細を示す計算タスクのフラグにカーソルを移動します。例えば、Intersect 計算タスクでは、GPU 時間の大部分がストールにあります。これは、頻繁にサンプラーやメモリーがアクセスされたことが原因であると考えられます。ホットな GPU 計算タスクをクリックして、[グラフィックス] ウィンドウを開きます。ウィンドウでは、利便性のためこの計算タスクが選択されています。

EU アレイストール/アイドル

計算集約型のワークロードでは、実行ユニットが待機する典型的な原因となる [EU アレイストール/アイドル] セクションを調査します。このセクションでは、GPU 計算/メディア・ホットスポットなど、インテル® HD グラフィックスやインテル® Iris® グラフィックスで収集されたハードウェア・イベントを解析します。

設定した事前定義イベントに応じて、インテル® VTune™ プロファイラーはストール/アイドル状態の実行ユニットのメトリックを解析します。デフォルトでは、GPU 計算/メディア・ホットスポット解析は、サンプラービジー、サンプラーがボトルネック、GPU L3 帯域幅などの一般的な GPU メモリーアクセスを追跡するメトリックを含む、[概要] で事前定義されているメトリックを収集します。これにより、[EU アレイストール/アイドル] セクションには、頻繁にサンプラーをアクセスする GPU 計算タスクのリストと、GPU L3 帯域幅に依存する最もホットな GPU 計算タスクが表示されます。

サンプラービジー

解析設定で [基本計算] を選択した場合、インテル® VTune™ プロファイラーは GPU 上の異なるデータタイプへのアクセスを特定するメトリックを解析し、[占有率] セクションを表示します。占有率が低い GPU タスクに関する情報を参照し、占有率のピークを達成する方法を理解してください。

低い占有率

ピーク占有率がアプリケーションの問題としてフラグが表示されている場合、GPU 上のすべてのスレッド を制限する要因を調査してください。該当するソリューションを適用してコードを変更することを検討してください。

低いピーク占有率の原因となる要因 解決方法

計算タスクでワークグループごとに要求される SLM サイズが大きすぎます

SLM サイズを小さくするか、ローカルサイズを増やします

グローバルサイズ (計算タスクによって処理されるワーク項目数) が小さすぎます

グローバルサイズを増やすます

バリア同期 (GPU サブスライス上のハードウェア・バリア数が制限されているため、同期プリミティブによって占有率が低くなる可能性があります)

バリア同期を削除するか、ローカルサイズを増やします

占有率がアプリケーションの問題としてフラグが表示されている場合、コードを修正してハードウェア・スレッドのスケジュールを改善します。これは、スレッドのスケジュールが効率良く機能しない原因として考えられます。

  • 小さな計算タスクは、タスクの実行時間と比較してオーバーヘッドが大きくなる可能性があります。
  • 計算タスクを実行するスレッド間では、インバランスが発生する可能性があります。

[基本計算] 事前定義では、DRAM 帯域幅の解析も有効になります。GPU ワークロードが DRAM 帯域幅依存である場合、対応するメトリック値にフラグが示されます。実行中に DRAM 帯域幅を過度に使用する GPU 計算タスクをテーブルで調査します。

解析設定で、[完全な計算][複数実行を許可] が選択されている場合、インテル® VTune™ プロファイラーは、データ収集に [概要][基本計算] イベントグループの両方を使用し、同じビューに EU アレイストール/アイドルのすべての原因を表示します。

インテル® HD グラフィックスおよびインテル® Iris®グラフィックスのハードウェア・イベントを解析するには、GPU 解析のシステム設定が適切であることを確認してください。

FPU 利用率

アプリケーションの実行で、収集時間の 80% 以上が両方の浮動小数点ユニット (FPU) の利用に費やされている場合、インテル® VTune™ プロファイラーはそのような値を問題としてハイライト表示し、FPU を過度に利用するカーネルをリストします。

フラグが示されるカーネルをクリックして、[グラフィックス] タブ > [タイムライン] ペインに切り替えて、解析実行中の FPU 使用を示す [GPU EU 命令] メトリックの分布を調べ、最も高いメトリック値の時間範囲を特定します。高い FPU 利用率の問題に対処するには、計算量を減らすことを検討してください。

帯域幅利用率

メモリー依存のアプリケーションでは、平均システム帯域幅の統計と、アプリケーションが各帯域幅をどのように使用しているかを示す帯域幅利用率分布図を含む [帯域幅利用率分布図] セクションを調査します。

収集とプラットフォーム情報

GPU と CPU データを含むプラットフォーム情報を調査します。最後の 4 つの GPU 特性は、インテル® HD グラフィックスとインテル® Iris® グラフィック固有です。