0

CUDA アプリケーションを作成しました。私のアプリケーションはカーネルを約 40 回呼び出します。それをプロファイリングした後、すべてのカーネルが実行を終了した後、1 つ存在しcudaMemset()ます。そして、これらの cudaMemset は多くの時間を消費しています。cudaMemsetただし、ファイルには何もありません.cu。CUDA API は内部的に呼び出しcudaMemsetますか? また、CUDA プロファイラーで行番号を知る方法はありますか?

4

1 に答える 1

1

Nsight Visual Studio Edition のトレース アクティビティは、すべての CUDA ランタイムおよび CUDA ドライバー API 呼び出しのコール スタックのキャプチャをサポートしています。

CUDA ランタイム API 呼び出しのコールスタック トレースを有効にする

  1. NsightメニューでStart Performance Analysisを実行します。( Nsightの新しい分析アクティビティ< 3)
  2. アクティビティ エディターで、[Trace Settings] セクションと [CUDA] セクションを展開します。
  3. Runtime API Traceの横にある CUDA セクションで、Call Stack TraceAlwaysに設定します。
  4. 分析アクティビティを実行します。

CUDA ランタイム API 呼び出しのコールスタック トレースの表示

  1. キャプチャされた分析レポートで、左上にある [レポート ページ] セレクターをクリックし、[ CUDA ランタイム API 呼び出し] ページを選択します。
  2. テーブルで、目的の API 呼び出しをクリックします。
  3. レポート ページの左下にある相関ペイン ツリーで、 [スタック トレース] をクリックします。

上記のプロセスは、他の API ドメインでも実行できます。相関ペインを使用して、カーネルの起動またはメモリ コピーを生成する API 呼び出しと呼び出しスタックを特定することもできます。

コール スタック トレースを示す Nsight Visual Studio Edition 3.0 RC1 分析レポート

于 2013-02-14T19:09:55.893 に答える