インテル® VTune™ Amplifier による GPU 解析

同カテゴリーの次の記事

インテル® HD グラフィックスとインテル® Iris™ グラフィックスを使用するアプリケーションの解析

この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「GPU Analysis」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS 環境でも十分ご利用いただけます。また、構成は英語版のヘルプと同じ階層構造にしてあります。


GPU のハードウェア・リソース、有効な GPU 時間、OpenCL* 計算タスクとインテル® Media SDK プログラムタスクの利用状況をモニターするため、インテル® VTune™ Amplifier の GPU 解析を使用します。

インテル® VTune™ Amplifier は、アプリケーションが効率良くグラフィックス・プロセッサーを活用しているか解析するため、次のオプションを提供します。

オプション オーバーヘッド サポートされる
ターゲットシステム

サポートされる
グラフィックス

サポートされる
解析タイプ
GPU 使用率を解析 すべて すべて CPU/GPU 並行性 (デフォルト)、GPU ホットスポット (デフォルト)、カスタム解析
プロセッサー・
グラフィックスの
ハードウェア・
イベントを解析
Windows*、Linux*、および Android* インテル® HD グラフィックスおよびインテル® Iris™ グラフィックス (以下、「インテル® グラフィックス」と表記) のみ (管理者権限が必要) CPU/GPU 並行性 (プリセットされた概要)、GPU ホットスポット、カスタム解析
OpenCL* と
インテル® Media SDK プログラムをトレース
OpenCL* カーネル解析: Windows* および Linux*

インテル® Media SDK プログラム解析: Linux*

インテル® グラフィックスのみ GPU ホットスポット (デフォルト)、カスタム解析

必要条件: Linux* ターゲットの場合、GPU 上でインテル® HD グラフィックスおよびインテル® Iris™ グラフィックス (以下、「インテル® グラフィックス」と表記) のハードウェア・イベントを解析するには、インテル® Media Server Studio 2015 R5 以降をインストールし、Getting Started Guide (英語) に従ってカーネルドライバーをビルドします。

GPU 解析オプションを有効にするには、次の操作を行います。

  1. インテル® VTune™ Amplifier ツールバーの [New Analysis (新規解析)] ボタン (スタンドアロン GUI)/ (Visual Studio* IDE) をクリックします。

    [Analysis Type (解析タイプ)] 設定ウィンドウが表示されます。

  2. 左に表示されているツリーから、該当する解析タイプ (例: GPU Hotspots) を選択します。

    右のペインは、選択した解析タイプの設定オプションで更新されます。

GPU 使用率

注:

時間経過における一般的な GPU の使用をモニターするには、インテル® VTune™ Amplifier を管理者権限で実行します。

[Analyze GPU usage (GPU 使用率を解析)] チェックボックスをオンにして、インテル® VTune™ Amplifier が GPU の利用状況を調査するように設定し、アプリケーションが CPU もしくは GPU のどちらに依存しているかを確認します。

データが収集されたら、[Graphics (グラフィックス)] ウィンドウの [Timeline (タイムライン)] ペイン: [Platform (プラットフォーム)] タブ (英語) を参照します。GPU が頻繁にビジーになり、ビジー状態と次のビジー状態の間のアイドル時間が非常に短く、GPU ソフトウェアのキューがほとんどゼロにならない状況では、理論的にはアプリケーションは GPU に依存しています。ビジー状態の間のギャップが長く、この間 CPU がビジーになる場合、アプリケーションは CPU 依存であると言えます。しかし、このような明確な状況はまれであるため、詳細な解析によりすべての依存関係を明らかにする必要があります。例えば、GPU エンジンがシリアル化されている場合 (GPU エンジンがビデオ処理とレンダリング処理を交互に実行するなど)、誤って GPU 依存と見なされる可能性があります。このケースでは、CPU で実行されるアプリケーションによって、GPU 上で非効率なスケジューリングが生じます。

GPU が時間の経過とともにビジーになる場合、GPU が効率良く利用されているか、また改善の余地があるかを理解する必要があります。これは、インテル® VTune™ Amplifier で収集されるインテル® グラフィックスのレンダーと GPGPU エンジン向けのハードウェア・メトリックにより解析できます。

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

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

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

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

以下のスキームは、インテル® グラフィックスのさまざまな処理でインテル® VTune™ Amplifier によって収集されるメトリックを表示します。

GPU メトリック (英語) は、GPU ハードウェアがどれくらい効率良く利用されているか、そしてパフォーマンス向上のため改善の余地があるか特定するのに役立ちます。メトリックの多くは、サンプリング中のすべてのサイクルに対して GPU 機能ユニットが特定の状態であったサイクルの比率で表されます。メトリックの計算に使用される式を確認するには、グリッドの対応する列にマウスカーソルを移動します。例えば、インテル® VTune™ Amplifier は、次のような基本的な GPU ハードウェアのメトリックを収集します。

メトリック
EU Array Active
(EU 配列アクティブ)
EU Array Stalled
(EU 配列ストール)
EU Array Idle
(EU 配列アイドル)

インテル® VTune™ Amplifier による GPU メトリックの解析では、[Analyze Processor Graphics hardware events (プロセッサー・グラフィックスのハードウェア・イベントを解析)] ドロップダウンからプラットフォーム固有の事前定義されたハードウェア・メトリックを選びます。実行ユニット (EU) のアクティビティーには、すべての事前定義収集データが設定されています: EU 配列アクティブ、EU 配列ストール、EU 配列アイドル、計算スレッドのストール、およびコア周波数。

  • [Overview (概要)] イベントグループには、メモリーリード/ライト帯域幅、GPU L3 ミス、サンプラービジー、サンプラー・ボトルネック、および GPU メモリーのテクスチャー・リード帯域幅などの一般的な GPU メモリーアクセスに関するメトリックが含まれます。これらのメトリックは、グラフィックスと計算主体のアプリケーションの両方に役立ちます。
  • [Compute Basic (計算の基本情報)] イベントグループ (グローバル/ローカル・メモリー・アクセスを含む) には、GPU 上の異なるタイプのデータへのアクセスに関するメトリックが含まれます: タイプで分類されないリード/ライト帯域幅、タイプで分類されたリード/ライト・トランザクション、SLM リード/ライト帯域幅、レンダラー/GPGPU コマンド・ストリーマーのロード、および GPU EU 配列の利用状況。これらのメトリックは、GPU 上の計算主体のワークロードに役立ちます。
  • [Compute Extended (計算の追加情報)] イベントグループには、開発コード名 Broadwell 以降のインテル® プロセッサーの GPU 解析のみをターゲットとするメトリックが含まれます。その他のシステムでは、このイベントグループは利用できません。
  • [Full Compute (計算の完全な情報)] イベントグループ (プレビュー機能) は、[Overview][Compute Basic] イベントグループを組み合わせたもので、同一解析結果内で EU 配列ストール/アイドルの問題の検出と特定を可能にします。

[GPU sampling interval (GPU サンプリング間隔)] で GPU ハードウェア・メトリック収集向けの GPU サンプル間の間隔 (ミリ秒) を指定します。デフォルトでは、インテル® VTune™ Amplifier は、ハードウェア・イベントベース・サンプリング収集には 1 ミリ秒の間隔を、ユーザー・モード・サンプリングとトレース収集には 1000 ミリ秒を使用します。

収集と後処理が完了し、結果が表示されたら、[Graphics (グラフィックス)] タブで GPU アクティビティーの詳細、CPU プロセスおよびスレッドとの関連性を確認します。グリッドの列の名前にマウスオーバーするか、右クリックして [What’s This Column? (列の説明)] コンテキスト・メニューを選択すると、GPU メトリックの説明を見ることができます。

注:

リモート・デスクトップ接続を介して GPU 解析を実行する場合、ソフトウェアが次の要件を満たしていることを確認してください。

  • インテル® VTune™ Amplifier 2015 Update 2 以降
  • インテル® グラフィックス・ドライバー 15.36.14.64.4080 以降
  • ターゲット解析アプリケーションが RDC を介して実行可能なこと

それ以外の場合は、ターゲット・コンピューターのコンソールからインテル® VTune™ Amplifier を実行するか、VNC を介してターゲット・コンピューターにアクセスします。

OpenCL* カーネルとインテル® Media SDK プログラムの解析

OpenCL* ソフトウェア・テクノロジーやインテル® Media SDK アプリケーションを使用する GPU 依存のアプリケーションでは、[Analysis Target (解析ターゲット)][Launch Application (アプリケーションを起動)][Attach to Process (プロセスにアタッチ)] のような解析ターゲットタイプを選択して、[Analysis Type][OpenCL and Intel Media SDK programs (OpenCL* とインテル(R) Media SDK プログラム)] チェックボックスをオンにします。

OpenCL* アプリケーションでは、最もホットな OpenCL* カーネルを特定し、GPU 上で実行するためカーネルにより転送されたものを示す [Graphics] ウィンドウで計算キューを調査し、このデータをハードウェア・メトリックと関連付けて、特定のカーネルでパフォーマンスの問題が検出された GPU アーキテクチャー・ブロックを特定します。

注:

アタッチモードでは、計算キューがすでに作成されているプロセスをアタッチすると、インテル® VTune™ Amplifier はこのキューの OpenCL* カーネルのデータを表示しません。

インテル® Media SDK プログラムでは、タイムラインでインテル® Media SDK タスクの実行を調査し、このデータをそれぞれの時間軸で GPU の利用状況と関連付けることができます。

関連項目

インテル® Media SDK プログラム解析の設定 (英語)
コマンドラインから GPU 解析を実行する (英語)
インテル® HD グラフィックスとインテル® Iris™ グラフィックスを使用するアプリケーションの解析
GPU OpenCL* アプリケーション解析データの解釈 (英語)

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事