Nsight调试遇到的坑

这几天刚搭建一台深度学习的工作站,发现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调试遇到的坑

Nsight调试遇到的坑

在这里说明一个问题,第一张图来自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还是不行。

Nsight调试遇到的坑

最后通过将TDR设置False,解决该问题。再回看第一张图,GTX760的架构为Kelper,在Nsight5.5前所有的驱动应该都是可以,出现thread code被停止的错误,应该是核函数延迟被触发所导致的问题。

Nsight调试遇到的坑

总结:遇到CUDA问题多看官方文档,多逛CUDA开发论坛