コマンドラインから gpu-hotspots 値を使用して、GPU 計算/メディア・ホットスポット解析を起動します。
GPU 利用率の高い GPU カーネルを調査し、この利用率の有効性を予測してストールまたは低占有率の原因を特定します。
選択した GPU メトリックで時間経過ごとにアプリケーションのパフォーマンスを調査します。
最も効率の悪い SYCL* または OpenCL* カーネルを解析して、非効率なカーネルコードのアルゴリズムや不適切なワーク項目の構成を特定します。
特性化設定オプションを使用して、次のことを行います。
[特性化] ラジオボタンを選択すると、設定セクションが展開され、追加オプションが表示されます。
概要メトリックには、メモリーリード/ライト帯域幅などの GPU メモリーアクセス、GPU L3 ミス、サンプラービジー、サンプラー・ボトルネック、および GPU メモリーのテクスチャー・リード/ライト帯域幅を含むメトリックが含まれます。これらのメトリックは、グラフィックスと計算集約型のアプリケーションに役立ちます。
基本計算 (グローバル/ローカルメモリー・アクセス含む) メトリックグループは、GPU 上の異なるタイプのデータアクセスを区別するメトリック (型なしリード/ライト帯域幅、型ありリード/ライト・トランザクション、SLM リード/ライト帯域幅、レンダラー/GPGPU コマンド・ストリーマーの負荷、および GPU EU アレイの使用) を含みます。これらのメトリックは、GPU 上の計算集約型のワークロードに役立ちます。
計算拡張メトリックグループは、インテル® プロセッサー開発コード名 Broadwell 以降の GPU 解析のみをターゲットとする追加メトリックを含みます。それ以外のシステムでは、この事前定義は利用できません。
完全な計算メトリックグループは、概要と基本計算イベントセットの組み合わせです。
動的命令カウントメトリックグループは、特定の命令クラスの実行頻度をカウントします。このメトリックグループを使用すると、各カーネルの SIMD 利用率に関する情報も得られます。
[特性化] ドロップダウン・メニューには、プラットフォーム固有の事前定義された GPU メトリックが用意されています。動的命令数を除くすべての事前定義メトリックは、実行ユニット (EU) のアクティビティー・データに関する次のデータを収集します: EU アレイアクティブ、EU アレイストール、EU アレイアイドル、計算スレッドの開始、コア周波数、およびそれぞれの追加メトリック。
特性化解析では、追加のデータを収集することもできます。
トレース GPU プログラミング API オプションを使用すると、インテル® プロセッサー・グラフィックスで実行されている SYCL*、OpenCL*、またはインテル® メディア SDK プログラムを解析できます。このオプションは、CPU 側でアプリケーションのパフォーマンスに影響する可能性があります。
SYCL* または OpenCL* アプリケーションでは、最もホットなカーネルを特定し、パフォーマンスの問題が検出された GPU アーキテクチャー・ブロックを特定できます。
インテル® メディア SDK プログラムでは、タイムラインでインテル® メディア SDK タスクの実行を調査し、このデータをそれぞれの時間軸で GPU の利用状況と関連付けることができます。
サポートの制限
OpenCL* カーネル解析は、インテル® グラフィックス上で動作する Windows* と Linux* ターゲットで利用できます。
インテル® メディア SDK プログラム解析は、インテル® グラフィックス上で動作する Windows* と Linux* ターゲットで利用できます。
[アプリケーションを起動] または [プロセスにアタッチ] ターゲットタイプのみがサポートされます。
[プロセスにアタッチ] モードでは、計算キューがすでに作成されているプロセスにアタッチすると、インテル® VTune™ プロファイラーはこのキューの OpenCL* カーネルのデータを表示しません。
メモリー帯域幅の計算に必要なデータを収集するには、[メモリー帯域幅の解析] オプションを使用します。このタイプの解析には、インテル・サンプリング・ドライバーがインストールされている必要があります。
GPU ハードウェア・メトリック収集の GPU サンプルの間隔を指定する、[GPU サンプリング間隔 (ミリ秒] オプションを使用します。デフォルトで、インテル® VTune™ プロファイラーは 1 ミリ秒のインターバルを使用します。
ソース解析では、インテル® VTune™ プロファイラーは、GPU カーネルのメモリーアクセスによって引き起こされる、パフォーマンスが重要な基本ブロックを特定するのを支援します。
[基本ブロック・レイテンシー] または [メモリー・レイテンシー] プロファイル・モードでは、GPU 計算/メディア・ホットスポット解析は次のメトリックを使用します。
予測 GPU サイクル: GPU がプロファイルされた命令を実行するのに要した平均サイクル数。
平均レイテンシー: サイクルごとのメモリーリードおよび同期命令の平均レイテンシー。
インスタンスごとに実行された GPU 命令: カーネル・インスタンスごとの平均 GPU 命令実行数。
スレッドごとに実行された GPU 命令: カーネル・インスタンスごとに 1 つのスレッドで実行された平均 GPU 命令数。
[命令数] プロファイル・モードを有効にすると、インテル® VTune™ プロファイラーはカーネルにより実行された命令の内訳を次のグループで表示します。
[制御フロー] グループ |
ip レジスターを明示的に変更する if、else、endif、while、break、cont、call、calla、ret、goto、jmpi、brd、brc、join、halt および mov、add 命令 |
[送信 & 待機] グループ |
send、sends、sendc、sendsc、wait |
[Int16 & HP Float] | [Int32 & SP Float] | [Int64 & DP Float] グループ |
ビット操作 (整数型のみ): and、or、xor など 算術演算: mul、sub、avg、frc、mac、mach、mad、madm ベクトル算術演算: line、dp2、dp4 など 拡張数学演算 |
[その他] グループ |
nop を含むほかのすべての操作 |
[命令数] モードでは、インテル® VTune™ プロファイラーは、実行された命令のウェイトを合計して計算された、[1 秒あたりの操作数] メトリックも提供します。
ビット操作 (整数型のみ):
算術演算:
add、addc、cmp、cmpn、mul、rndu、rndd、rnde、rndz、sub - ウェイト 1
avg、frc、mac、mach、mad、madm - ウェイト 2
ベクトル算術演算:
拡張数学演算:
math.inv、math.log、math.exp、math.sqrt、math.rsq、math.sin、math.cos - ウェイト 4
math.fdiv、math.pow - ウェイト 8
操作 (演算) のタイプはデスティネーション・オペランドのタイプにより決定されます。
vtune -collect gpu-hotspots [-knob <knobName=knobValue>] -- <target> [target_options]
Knob: gpu-sampling-interval、profiling-mode、characterization-mode、code-level-analysis、collect-programming-api、computing-task-of-interest、target-gpu
GPU 計算/メディア・ホットスポット解析で利用可能な knob (設定オプション) に関する最新情報は、vtune -help collect gpu-hotspots コマンドで取得できます。
この例では、デフォルトの事前定義された概要 GPU ハードウェア・メトリックを使用して、デフォルトの特性化モードで gpu-hotspots 解析を実行します。
vtune -collect gpu-hotspots -knob enable-gpu-runtimes=true -- /home/test/myApplication
データ収集が完了したら、結果を表示するため次のいずれかの操作を行います。