通过将Matlab与Nsight GPU Debugger相连,在mexfunction上调试cuda内核

时间:2013-09-28 17:08:06

标签: visual-studio-2010 matlab debugging cuda nsight

我想问一下如何调试从VS 2010和Nsight的mexfunction调用的cuda内核。我按照http://http.developer.nvidia.com/NsightVisualStudio/2.2/Documentation/UserGuide/HTML/Content/Attach_CUDA_to_Process.htm中的说明操作,但未启用附加按钮以附加matlab。

PS:Win 7 64x,Matlab 2011 x64,VS 2010,CUDA SDK 5.5 64x,Nsight 3.1 64x,GForce 9600。

enter image description here

2 个答案:

答案 0 :(得分:2)

  1. 打开Nsight Monitor Nsight Visual Studio Edition 3.1 - > Nsight Monitor
  2. 转到Nsight监视器选项(位于任务栏左侧) - > CUDA - >使用此监视器进行CUDA附加 - > true
  3. 通过高级系统设置 - >添加环境变量NSIGHT_CUDA_DEBUGGER = 1环境变量并在两个面板中的用户系统变量中添加上述变量。
  4. 启动Matlab和Visual Studio,尝试将Matlab与Nsight调试器和限定符计算机名称连接起来。
  5. 在Matlab 2011a 64x和VS 2010 SP1上测试。

    enter image description here

答案 1 :(得分:1)

仅为MATLAB 设置NSIGHT_CUDA_DEBUGGER环境变量就足够了,因此您不必通过使每个进程都可连接来减慢整个系统的速度。引用NVIDIA的Nsight文档:

  

设置NSIGHT_CUDA_DEBUGGER=1会降低应用程序的性能,因为调试器是驻留的。 Tesla™设备和无头设备的效果极小;在具有桌面的显示设备上,它是最严重的,其中调试器可能需要序列化本来是异步的启动。因此,并非总是希望在系统范围或用户范围内设置NSIGHT_CUDA_DEBUGGER=1

要在正在运行的MATLAB会话中设置它(并为系统的其余部分节省空间):

>> setenv('NSIGHT_CUDA_DEBUGGER','1')

点击刷新或重新选择Nsight GPU调试器,它可以工作:

enter image description here

您仍需要配置Nsight以允许附加,但这是一次性设置:

enter image description here