执行完某个内核函数后让Nsight开始调试

let Nsight start debugging after certain kernel function is executed

我的CUDA程序内核函数太多,如果打开CUDA调试模式,某个内核函数的断点被触发后要等整整一个小时

Nsight有什么办法可以在某些内核函数之后开始调试,或者只调试某个内核函数?

我在 VS2012 中使用 Nsight

理论上您可以按照 Nsight 帮助文件中的说明进行操作(在线帮助本地帮助。在撰写该页时是 here)。

简而言之:

  • 在 Nsight Monitor 选项中,CUDA » Use this Monitor for CUDA attach 应该是 True.
  • 在启动您的应用程序之前,将名为 NSIGHT_CUDA_DEBUGGER 的环境变量设置为 1
  • 然后在你的CUDA内核中,你可以像这样添加一个断点:

    asm("brkpt;");
    

这将类似于主机代码中的 __debugbreak() 内在或 int 3 汇编指令。点击后,您将看到一个对话框,提示您附加 CUDA 调试器。

实际上,至少对我来说根本行不通™。也许你会有更多的运气。