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)。