1

Nsight 2.1 で CUDA コードをデバッグする際に奇妙な問題が発生しています。次のように main.cu から呼び出される2 つのグローバル関数があります。

dim3 block(threadsPerBlock);
dim3 grid(numBlocks);
InitPhotons<<<grid,block>>>(devicerun,sources[i],1);
cudaThreadSynchronize();
MC<<<grid,block>>>(devicerun,sources[i],1);

InitPhotons のブレークポイントを正常にヒットし、その関数を 1 ステップ実行できます。ただし、MC で設定した最初のブレークポイントしかヒットできません。関数をシングル ステップで実行しようとすると (VS では F10 キー)、デバッガーは続行コマンド (F5 キー) を使用したかのように動作し、ブレークポイントにヒットしなくなります。

他の誰かがこの問題に遭遇しましたか? 誰にも解決策のアイデアはありますか?

Visual Studio 2010 Pro で Parallel NSight 2.1 と CUDA 4.1 RC2 を使用しています。-G0 フラグを指定してコンパイルしていますが、最適化が無効になっています。

編集: コード パッチ メモリのデフォルト サイズに問題があるようです。Code patching memory factor を 2 から 4 に変更したところ、すべて正常に動作しました (Nsight->Options->CUDA->Code patching memory factor)。

4

1 に答える 1

1

私は NVIDIA の Parallel Nsight チームのメンバーです。残念ながら、これはバグの可能性があるようです。

あなたのプロジェクトを検討できる可能性はありますか? ここで問題のバグを報告して、電子メールで私に連絡してください: http://developer.nvidia.com/rdp/bugs/parallel-nsight-bug-reporting

早速見てみます。

ありがとう!

于 2012-01-05T02:59:50.450 に答える