执行完某个内核函数后让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 调试器。
实际上,至少对我来说根本行不通™。也许你会有更多的运气。
我的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 调试器。
实际上,至少对我来说根本行不通™。也许你会有更多的运气。