1

我在 Nsight 2.1 中调试我的 CUDA 代码时遇到了一个奇怪的问题。我有两个从 main.cu 调用的全局函数,如下所示:

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

我可以成功地在 InitPhotons 中打断点,然后单步执行该函数。但是,我只能打我在 MC 中设置的第一个断点。如果我尝试单步执行该函数(VS 中的 F10),调试器的行为就像我使用了 continue 命令 (F5) 并且不再命中断点。

有没有其他人遇到过这个问题?有人对解决方案有任何想法吗?

我在 Visual Studio 2010 Pro 中使用 Parallel NSight 2.1 和 CUDA 4.1 RC2。我正在使用 -G0 标志进行编译,并且禁用了优化。

编辑:问题似乎与代码修补内存的默认大小有关。我将代码修补内存因子从 2 更改为 4,一切正常(Nsight->Options->CUDA->代码修补内存因子)。

4

1 回答 1

1

我是 NVIDIA Parallel Nsight 团队的成员。不幸的是,这听起来可能是一个错误。

我们有机会看看你的项目吗?请通过电子邮件与我联系,在此处提交问题的错误:http: //developer.nvidia.com/rdp/bugs/parallel-nsight-bug-reporting

我会尽快看看。

谢谢!

于 2012-01-05T02:59:50.450 回答