8

nvprof を使用してベンチマークのイベントとメトリックにアクセスすることに慣れています。

nvprof --system-profiling on --print-gpu-trace -o (file name) --events inst_issued1 ./benchmarkname

system-profiling on --print-gpu-trace -o (filename)    

コマンドは、開始時刻、カーネル終了時刻、電力、温度のタイムスタンプを提供し、情報を nvvp ファイルに保存して、ビジュアル プロファイラーで表示できるようにします。これにより、特に特定のカーネルが実行されているときに、コードの任意のセクションで何が起こっているかを確認できます。私の質問はこれです--

カーネルの実行中など、ベンチマーク実行のセクションのみでカウントされるイベントを分離する方法はありますか? 上記のコマンドでは、

--events inst_issued1    

実行可能ファイル全体について集計された指示を与えるだけです。ありがとう!

4

2 に答える 2

17

プロファイラーのドキュメントを読むことをお勧めします。

実行可能ファイル内でプロファイリングのオンとオフを切り替えることができます。このための cuda ランタイム API は次のとおりです。

cudaProfilerStart() 
cudaProfilerStop() 

したがって、特定のカーネルのプロファイル情報のみを収集したい場合は、次のようにします。

#include <cuda_profiler_api.h>
...

cudaProfilerStart();
myKernel<<<...>>>(...);
cudaProfilerStop();

ドキュメントからの抜粋:

start 関数と stop 関数を使用する場合は、アプリケーションの開始時にプロファイリングを無効にするようにプロファイリング ツールに指示する必要もあります。nvprof の場合、 --profile-from-start off フラグを使用してこれを行います。Visual Profiler の場合は、設定ビューの [プロファイリングを有効にして実行を開始] チェックボックスを使用します。

また、具体的なドキュメントから、コマンドnvprofラインスイッチを使用して、イベント/メトリックの集計を単一のカーネルに制限できます。

 --kernels <kernel name>

ドキュメントには、追加の使用方法が記載されています。

于 2015-09-17T17:22:06.627 に答える