新手,刚接触CUDA编程,搭好了环境,想用nsight来调试,在vs里面,在核函数里面设置了断点,用CUDA Debugging,但断点就是不生效,电脑左下角会弹出Night 连接成功,程序跑完后,Night会提示Disconnected 整个电脑环境: 显卡: GF GTX1050
CPU: i3-4170 3.70GH
硬盘: 2T 软件:VS2013 + CUDA9.1 + Nsight 5.4
GPU世界论坛 bbs.gpuworld.cn
Hi, 楼主, 这个有多种可能的, (1)你的断点所在的行,不能被kernel启动的任何一个线程命中,自然断点不会生效。 这包括kernel在断点之前就已经执行结束, 或者断点处于某些if, while, for之类的里面,需要一定的条件才能执行到。 (2)kernel启动没有成功,例如你如果要求了2048个线程的block形状,此形状无法被目前的任何计算能力设备所满足,kernel无法执行该要求下的任何代码。自然无法命中。 建议的解决方案: (1)检查断点的位置,它需要至少能有一个线程执行到这里。 (2)检查kernel启动是否成功,请立刻在<<<>>>符号的下一行处,执行一次cudaGetLastError(), 看看它是否返回成功。 (3)考虑到很多时候之前就挂掉了是因为访存,你应当在启动CUDA Debugging的时候,勾选“enable CUDA memory checker", 否则很多情况下,kernel提前就会挂掉,执行不到断点所在行的。 (4)其他的小方面,例如使用debug编译之类的,你应当知道并已经做了,这里就不说了。