这几天刚搭建一台深度学习的工作站,发现CUDA自带的sample设置断点,进不了断点。
配置如下:
NVIDIA官网下的驱动:417.17
GPU:TitanXP
CUDA:10.0
NSight:6.0
出现的现象主要为:
1) CUDA Nsight Next-Gen debugger: could not initialize driver for debugging.
2) CUDA Nsight Legacy debugger: cuda grid launch failed.
看官方文档,对着官网提供的Nsight提供的支持的下面这个表格,反复看,开始没看出自己配置哪里有问题,觉得最起码用CUDA Nsight Legacy debugger可以调试通过。可反复编译尝试还是报上面两种错误。
在这里说明一个问题,第一张图来自Nsight支持的GPU列表,第二张图来自Nsight6.0 user GUIDE给出的Nsight支持的GPU列表。两张图在WIN10系统的情况有很大出入,第一张是以WIN10rs4作为分界线,第二张是以WIN10 rs3作为分界线,我的系统恰好是win10rs3,按照第一张图需要更换老版的驱动可解决调试的问题。
最后通过更换400以前的驱动,安装CUDA9. 2,Nsight5.6,可以成功进行CUDA Nsight Legacy debugger。
在另外一台win7搭载GTX760的电脑,安装了CUDA8.0,Nsight5.2也是不能调试进入断点,开始以为和TitanXP的工作站一样,也是驱动和CUDA版本问题,更换了好几个驱动版本,还是报launch grid failed以及thread stopped的错误,对照https://developer.nvidia.com/nsight-visual-studio-edition-supported-gpus-full-list#SupportedComputeConfigs,尝试了5.5的Nsight还是不行。
最后通过将TDR设置False,解决该问题。再回看第一张图,GTX760的架构为Kelper,在Nsight5.5前所有的驱动应该都是可以,出现thread code被停止的错误,应该是核函数延迟被触发所导致的问题。
总结:遇到CUDA问题多看官方文档,多逛CUDA开发论坛