我在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中使用带有CUDA 4.1 RC2的Parallel NSight 2.1。我正在使用-G0标志进行编译,并且禁用了优化。
编辑:问题似乎是代码修补内存的默认大小。我将Code修补内存因子从2更改为4,一切正常(Nsight-&gt; Options-&gt; CUDA-&gt; Code patching memory factor)。
答案 0 :(得分:1)
我是NVIDIA的Parallel Nsight团队的成员。不幸的是,这听起来像是一个错误。
我们有机会看看你的项目吗?请通过电子邮件与我联系,在此处提交问题的错误:http://developer.nvidia.com/rdp/bugs/parallel-nsight-bug-reporting
我会尽快看一下。
谢谢!