为什么调试kernel时,cuda debugger没启动就退出了(nsight显示connect,然后立即就disconnect了)。我用cuda 新建cuda project的例子程序addKernel,是可以进去debug的。
但是我的工程有点长,是不是WDD TDR ENABLE的原因呢?我尝试改成false,为什么改不动呢?
谢谢大家了!
为什么调试kernel时,cuda debugger没启动就退出了(nsight显示connect,然后立即就disconnect了)。我用cuda 新建cuda project的例子程序addKernel,是可以进去debug的。
但是我的工程有点长,是不是WDD TDR ENABLE的原因呢?我尝试改成false,为什么改不动呢?
谢谢大家了!
您的kernel没有使用-G参数进行编译。请如此解决:
右键点击您的.cu, 选择属性,在属性页里,选择CUDA C/C++, 并在右侧选择-G选项。
然后rebuild all, 重新进行nsight->cuda debugging.
我检查了的
在cuda c/c++下面的host, device选项里面的generate host debug information与generate device debug information都是选的“是”。
那就奇怪了,首先说,可以排除您的"TDR导致无法调试的关系“,
(1)因为您新建项目可以正常调试,而这个上去就提示断开连接,和TDR无关。
(2)其次nsight现在不需要关闭TDR watchdog也可以正常调试。
所以(3)唯一可能有关系的就是编译参数了,而最大可能是-G。
但是您已经给予了否定,说不是这个原因。我不知道了。
建议咨询其他版主/会员/nv官方支持。
你的分析师正确的,我只要以管理员身份登陆系统,TDR选项就能正确修改了。
目前还在排查没法进入kernel调试的原因,谢谢版主!
原因找到了,我的main(int agrc, char *argv)的参数解析直接用的是CPU的那套东西,比如atol之类的函数,我注释掉这段,就能cuda debug了。请问在cuda下面,如何解析main入口的参数呢?
这个和能否cuda调试真心没关系。
如果说真的有关系,那就是对命令行参数解析后,直接退出了进程。
直接立刻退出,导致根本就没有启动kernel,而没有启动,自然无法调试。
但这真心不是一个问题。您在询问如何调试kernel, 至少需要保证您的kernel被您运行了。否则无法为您解释如何修改命令行参数的解析,以及如何解析可以继续运行等等,这些,不是本论坛负责的范围。