Nsight3.0调试

用GTX650Ti +CUDA5.0+Nsight3.0进行调试,设置按照NVIDIA Nsight Visual Studio Edition 3.0 User Guide > CUDA Debugger > Walkthrough: Debugging a CUDA Application 里面进行的(在这里不能发链接),但是在断点处不停留,但是中间有链接过程如下图:请问一下是怎么回事啊?谢谢
[attach]3192[/attach]

楼主您好,因为您没有具体描述您的编译步骤,这里我将给出正确的过程,供您参考:

(1)确定您的.cu使用了-G进行编译。
(2)确定您通过VS在kernel而不是host code中点击了断点。
(3)确定您是通过Nsight->Start CUDA Debugging开始的调试。
(4)确定您的kernel会被正确的执行到。
(举个反例,一个<<<0,0>>>(…);的形状配置,将无法执行您的kernel)。

建议您检查此4点。
感谢您的周末来访。

谢谢斑竹的回答,经过检查你说的四项都应该没问题。但是第一点不是很明确,我认为斑竹是不是让我用cuda的编译规则进行编译啊。如果理解错误换望斑竹指点。
后面改了一下,出来的结果是这样的:

	@flatBlockIdx	0	long
	@flatThreadIdx	0	long
  •   threadIdx	{x = 0, y = 0, z = 0}	const uint3
    
  •   blockIdx	{x = 0, y = 0, z = 0}	const uint3
    
  •   blockDim	{x = 32, y = 32, z = 1}	const dim3
    
  •   gridDim	{x = 20, y = 10, z = 1}	const dim3
      @gridId	1	const long long
    

不知道是怎么回事?谢谢

第一点说的情况请参阅下图:

[attach]3196[/attach]

这是VS 2008中的截图,供您参考。

祝您编码顺利~

嗯。谢谢斑竹,现在可以了。。谢谢

不客气的,恭喜您搞定问题~~

祝您好运~

如果您是在按照上述四点进行了确保,然后在kernel中停下来了,然后在vs的debug->local窗口中看到了这些变量和它们的当前值,

那么这样是正常的。它们是内建的变量。

所以您在调试的时候,哪怕您自己没有定义过它们,它们也会存在的。

谢谢。

谢谢斑竹的提醒。。。现在已经能够成功调试。但是有几个问题不明白:
1:在Inspect Values in Memory看到的是一群地址,有什么用呢?
2:还有个就是cuda编程技巧的问题,原来一直是把每个线程到一个cpu用,结果速度很慢。后面听说在GPU中最好执行 纯计算的运算,不如全部为加或者减,乘除都要少用;而且最好不要用for循环这种语句。但是到底是怎样才比较好,没有个明确的概念。望斑竹指教。谢谢

也解决了我的问题:lol