このウィンドウを使用して、インテル® VTune™ プロファイラーで GPU 解析を行い、高い GPU 利用率の GPU タスクを識別してこの利用率の効率を予測します。このビューは、GPU で計算ワークを実行する OpenCL*、SYCL* およびインテル® メディア SDK アプリケーションの解析に役立ちます。
このウィンドウにアクセスするには、[GPU 計算/メディア・ホットスポット] ビューポイントを選択し、結果タブの [グラフィックス] サブタブをクリックします。
通常のボトムアップ解析とスタックデータに加えて、[グラフィックス] ウィンドウでは CPU/GPU のビジー状態を関連付けて、時間経過における GPU メトリックの分布を表示します。
グリッド。プログラム単位の基本パフォーマンス・メトリックを解析して、最も時間を消費するユニットを特定します。アプリケーションが OpenCL* ソフトウェア・テクノロジーを使用し、[GPU プログラミング API をトレース] オプションを有効にして解析すると、グリッドはデフォルトで [計算タスクの目的] 粒度でグループ化されます。 最初に、合計時間が最も長いホットなカーネルを解析し最適化します。これらは、平均実行時間が長い、あるいは平均実行時間は短くても頻繁に呼び出される (インスタンスのカウント値を参照) といった特徴のカーネルを含みます。どちらの場合も注目すべきです。詳細については、GPU OpenCL™ アプリケーション解析をご覧ください。 GPU 実行ユニットがアイドル状態、キューに入れられている状態、またはコードを実行中のビジー状態である CPU アクティビティー (モジュール/関数が実行される時間と CPU 時間) を理解するには、[GPU レンダーとEU エンジンストール状態] グループレベルを使用します。 ![]() |
|
スレッド。特定のスレッドの CPU と GPU 利用率を調査します。[プラットフォーム] タブには、スレッド関数が含まれるモジュール名としてスレッド名が表示されます。例えば、myFoo 関数が MyMegaFoo (Linux*) または MyMegaFoo.dll (Windows) 関数に属する場合、スレッド名は MyMegaFoo (Linux*) または MyMegaFoo.dll (Windows*) となります。この手法は、タイムライン上に表示されるワークを生成するスレッドコードの場所を特定するのに役立ちます。 Windows* ターゲットのみ: CPU と GPU の使用状況を関連付け、アプリケーションが GPU に依存しているか判断します。GPU エンジン使用率バーは、GPU タスクによって引き起こされる CPU スレッド上の DMA パケットを表示します。このバーは、GPU エンジンのタイプによって色分けされます (上記の例の黄色のバーはレンダーと GPGPU に対応します)。 |
|
GPU ハードウェア・メトリック: インテル® HD およびインテル® Iris® グラフィックスを搭載したプロセッサーの GPU 解析のため、[プロセッサー・グラフィックス・ハードウェア・イベントの解析] オプションを有効にした場合、インテル® VTune™ プロファイラーは選択したメトリックグループの統計を表示します。 例えば、デフォルトの概要メトリックのグループでは、GPU 実行ユニットから開始します。[EU アレイアイドル] メトリック。アイドルサイクルは無駄なサイクルです。スケジュールされているスレッドがなく、EU の貴重な計算リソースが活用されていません。EU アレイアイドル がゼロの場合、GPU は効率良く活用されており、すべての EU にスレッドがスケジュールされています。 ほとんどの場合、最適化では EU アレイストールメトリックを最小にし、EU アレイアクティブを最大にします。ただし、メモリー帯域幅に制約されるアルゴリズムは例外です。この場合、(EU アレイアクティブ を最大にするのではなく) メモリー帯域幅を特定のプラットフォームのピークに近づけるように最適化します。 メモリーアクセスは、しばしばストールの原因になります。メモリーレイアウトと注意深く設計されたメモリーアクセスの重要性を軽視することはできません。[EU アレイストール] がゼロでなく [GPU L3 ミス] に関連しており、アルゴリズムがメモリー帯域幅に制約されていない場合は、メモリーアクセスとレイアウトの最適化を試してみるべきです。 サンプラーアクセスはコストが高く、容易にストールを引き起こします。サンプラーアクセスは、サンプラーがボトルネックとサンプラーがビジーのメトリックによって測定できます。 注GPU 上でインテル® グラフィックスのハードウェア・イベントを解析するには、GPU 解析用にシステムがセットアップされていることを確認してください。 |
|
計算キュー。OpenCL* カーネル・サブミッションの詳細では、サブミッションと実行の順序に注目し、キューで費やされた時間を特定して、計算キューのデータにズームして解析します。インテル® VTune™ プロファイラーは、同じ名前とグローバル/ローカルサイズのカーネルを同色で表示します。同期タスクは、影付きの垂直線 カーネルタスクをクリックすると、トップレイヤーに表示された実行に対応するキュー全体がハイライトされます。カーネルの実行パラメーターを見るには、キューのオブジェクトにマウスカーソルを移動します。 ![]() Windows* ターゲットのみ: [プラットフォーム] ウィンドウに切り替えて、OpenCL* デバイスキューの実行パスが DMA パケット・ソフトウェア・キューとどのように関連するか調査します。 |
|
GPU 使用メトリック: GPU 使用率バーは、使用されている GPU エンジンのタイプに応じて色分けされます。 [プラットフォーム] タブが、GPU がほとんどビジーであり、ビジー間隔のアイドル時間が非常に短く、GPU ソフトウェアのキューがほとんどゼロにならないことを示す場合、理論的にはアプリケーションは GPU に依存しています。ビジー間隔のアイドル時間が長く、その間 CPU がビジーとなる場合、アプリケーションは CPU 依存であると言えます。しかし、このような明確な状況はまれであるため、詳細を解析してすべての依存関係を明らかにする必要があります。例えば、GPU エンジンがシリアル化されている場合 (GPU エンジンがビデオ処理とレンダリング処理を交互に実行するなど)、誤って GPU 依存と見なしてしまう可能性があります。このケースでは、CPU で実行されるアプリケーションが原因で GPU 上で非効率なスケジューリングが生じています。 |
さらに OpenCL* カーネル解析を行うには、注目する計算タスク (例えば、AdvancedPaths) を選択して、[アーキテクチャー分布図] に切り替えます。インテル® VTune™ プロファイラーは、選択されたカーネルが実行された時間範囲の GPU ハードウェア・メトリックごとのパフォーマンス・データを表示します。
フラグ付き値にはパフォーマンスの問題があります。この例では、GPU 時間の約 50% がストールしています。これは、メモリーやサンプラーのアクセスによりパフォーマンスが制限されていることを意味します。