CUDA アプリケーションを作成しました。私のアプリケーションはカーネルを約 40 回呼び出します。それをプロファイリングした後、すべてのカーネルが実行を終了した後、1 つ存在しcudaMemset()
ます。そして、これらの cudaMemset は多くの時間を消費しています。cudaMemset
ただし、ファイルには何もありません.cu
。CUDA API は内部的に呼び出しcudaMemset
ますか? また、CUDA プロファイラーで行番号を知る方法はありますか?
1 に答える
1
Nsight Visual Studio Edition のトレース アクティビティは、すべての CUDA ランタイムおよび CUDA ドライバー API 呼び出しのコール スタックのキャプチャをサポートしています。
CUDA ランタイム API 呼び出しのコールスタック トレースを有効にする
- NsightメニューでStart Performance Analysisを実行します。( Nsightの新しい分析アクティビティ< 3)
- アクティビティ エディターで、[Trace Settings] セクションと [CUDA] セクションを展開します。
- Runtime API Traceの横にある CUDA セクションで、Call Stack TraceをAlwaysに設定します。
- 分析アクティビティを実行します。
CUDA ランタイム API 呼び出しのコールスタック トレースの表示
- キャプチャされた分析レポートで、左上にある [レポート ページ] セレクターをクリックし、[ CUDA ランタイム API 呼び出し] ページを選択します。
- テーブルで、目的の API 呼び出しをクリックします。
- レポート ページの左下にある相関ペイン ツリーで、 [スタック トレース] をクリックします。
上記のプロセスは、他の API ドメインでも実行できます。相関ペインを使用して、カーネルの起動またはメモリ コピーを生成する API 呼び出しと呼び出しスタックを特定することもできます。
于 2013-02-14T19:09:55.893 に答える