Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

GPU パフォーマンス アナライザー

GPU パフォーマンス アナライザー

GPU パフォーマンス アナライザーでは、CUDA® 生成コードのパフォーマンス ボトルネックを可視化し、特定し、対処するために、GPU と CPU のアクティビティ、イベント、パフォーマンス メトリクスが時系列のタイムライン プロットに表示されます。

Screenshot of GPU Performance Analyzer

これらの数値は代表的なものです。実際の値はハードウェア設定によって異なります。このプロファイリングは、6 コアの 3.5GHz Intel® Xeon® CPU および NVIDIA® TITAN XP GPU を搭載したホスト マシンで Jetson™ AGX Xavier 開発キットを使用し、MATLAB® R2023a を使用して行われました。

プロファイリング タイムライン

プロファイリング タイムラインには、実行時間がしきい値を上回るすべてのイベントの完全なトレースが表示されます。プロファイリング トレースのスニペットを示しています。

Screenshot of GPU Performance Analyzer Timeline pane

マウス ホイール (または同等のタッチ パッド オプション) を使用して、タイムラインのズームイン/ズームアウトができます。あるいは、パネル上部にあるタイムラインの概要を使用して、タイムライン プロットをズームしたり操作したりすることもできます。

各イベントのツールチップは、CPU と GPU 上での選択されたイベントの開始時間、終了時間、および持続時間を示します。また、CPU でカーネルが起動されてから GPU で実際にカーネルが実行されるまでの経過時間も示します。

既定では、GPU パフォーマンス アナライザー ウィンドウの [ビュー モード][エントリポイント関数] に設定されており、[プロファイリング タイムライン] には生成コードの最後の実行のみが表示されます。すべての反復を表示するには、[ビュー モード][全適用] に設定します。

[関数] 行と [ループ] 行では、イベント バーの右側に表示される上/下矢印を使用して、呼び出し元と呼び出し先の関数/ループ間を移動できます。

イベント統計

イベント統計パネルには、選択したイベントの追加情報が表示されます。たとえば、feature_matching_kernel2 は次の統計を示します。

Screenshot of GPU Performance Analyzer Event Statistics pane

洞察

洞察パネルには、GPU と CPU のアクティビティの概要が円グラフで表示されます。円グラフは、プロファイリング タイムラインのズーム レベルに応じて変化します。洞察パネルのスニペットを示しています。タイムラインで選択された領域内で、GPU 使用率が 76% であることを示しています。

Screenshot of GPU Performance Analyzer Insights pane

呼び出しツリー

このセクションでは、CPU から呼び出される GPU イベントを一覧表示します。呼び出しツリーの各イベントには、呼び出し元関数の実行時間が割合として一覧表示されます。このメトリクスは、生成されたコードのパフォーマンス ボトルネックを特定するのに役立ちます。呼び出しツリーで対応するイベントをクリックして、プロファイリング タイムラインの特定のイベントに移動することもできます。

ファイル

[レポートを開く] を使用して、GPU プロファイリング レポート (gpuProfiler.mldatx) を開きます。既定では、関数 gpuPerformanceAnalyzer は次の場所にファイルを生成します。

codegen/target/fcn_name/html

次を target とすることができます。

  • exe (CUDA 実行可能ファイル)

  • lib (CUDA ライブラリ)

  • dll (CUDA ダイナミック ライブラリ)

fcn_name は、MATLAB エントリポイント関数の名前です。

メモ

gpuPerformanceAnalyzer は、同じコードに対して同じタイプの出力を生成するたびに、以前のビルドからファイルを削除します。以前のビルドのファイルを保持する場合は、別のビルドを開始する前に、それらを別の場所にコピーします。

フィルター

このセクションでは、レポートのフィルター処理オプションを提供します。

  • ビュー モード - このオプションを使用して、アプリケーション全体 (初期化と終了を含む) または設計関数 (初期化と終了なし) のプロファイリング結果を表示します。

  • イベントしきい値 - 指定されたしきい値より短いイベントをスキップします。

  • メモリの割り当て/解放 - GPU デバイスのメモリ割り当てと割り当て解除に関連するイベントを CPU アクティビティ バーに表示します。

  • メモリ転送 - ホストからデバイス、およびデバイスからホストへのメモリ転送を表示します。

  • カーネル - CPU カーネルの起動と GPU カーネルのアクティビティを表示します。

  • その他 - 同期や GPU の待機など、その他の GPU 関連イベントを表示します。

制限

  • GPU パフォーマンス アナライザーは Nsight 2022.5.1 でテストされています。Nsight Systems の他のバージョンでは、Windows® プラットフォームの管理者権限が必要な場合があります。

  • [関数] 行と [ループ] 行では、イベント バーの右側に表示される上/下矢印を使用して、呼び出し元と呼び出し先の関数/ループ間を移動できます。短いイベントの場合、上/下矢印を使用して呼び出し元の関数/ループに戻ることができない場合があります。そのような場合は、呼び出しツリーを使用して呼び出し元/呼び出し先の関数/ループに移動します。

  • GPU パフォーマンス アナライザーは、行にイベントが含まれていない場合でも、行ヘッダーを表示します。

  • 低いズーム レベルでは、GPU パフォーマンス アナライザーは、短い間隔で区切られた短いイベントの密集したエリアを単一のイベントとして表します。高いズーム レベルでは、GPU パフォーマンス アナライザーは実際のイベントを表示します。ただし、イベントの継続時間が極端に短い場合は、高いズーム レベルでも、このイベントをタイムライン プロット上にレンダリングできない可能性があります。

  • GPU パフォーマンス アナライザーは、単一の行を使用してすべての GPU イベントを表します。複数の CUDA ストリームの場合、[GPU アクティビティ] 行にオーバーラップ イベントが含まれることにより、[洞察] パネルでの占有率の計算が不正確になる可能性があります。たとえば、cuDNN などの深層学習ライブラリが複数の CUDA ストリームを使用する場合があります。

  • [エントリポイント関数] モードにおいて、エントリポイント関数終了後にトリガーされる GPU イベントが正しく表示されない場合があります。

参考

関数

オブジェクト

関連する例

詳細