2013-04-27 122 views
0

我有一个cuda应用程序,我试图使用并行Nsight调试器进行调试。我的内核函数中有一个断点。但是,当我试图调试代码时,调试器不会停在断点处并立即打印出结果。我搜索了这个,我也有一个像this one这样的帖子。 但是我在项目的属性页中选中了“生成GPU调试信息”,它已经转为“是(-G0)”。我还在像MatrixMulCUDA这样的Nvidia示例程序之一中设置了断点,我可以轻松地调试它们的程序并能够看到细节。所以我不知道我应该做什么或者需要改变什么其他设置,以便我可以调试我的程序。我想提供更多的信息: 1.我正在使用Microsoft visual studio 2010 2.我的GPU卡是NVidia 560ti。 3我正在使用CUDA 5.0和并行NSight visual studio版本2.2。NSight在调试时跳过断点

下面是我调用内核的host code function的一些屏幕截图,以及kernel function的一部分,我已经设置了断点。任何帮助将非常感激。

+0

一种可能性是您的内核根本没有执行。你在做[适当的cuda错误检查](http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the-cuda-runtime-api) ?我没有看到您提供的主机代码图片。你也可以尝试用'cuda-memcheck'运行你的代码来查看是否有错误报告。 – 2013-04-27 03:17:47

+0

不,你说得对。我没有做过适当的cuda错误检查。但是有一件事。我在将矩阵复制回cpu后从printf得到的结果,我得到了期望的结果。所以我相信内核正在执行。但我仍然会按照你的建议去做,我会让你知道的。但是这种行为背后还有其他可行的理由吗? – duttasankha 2013-04-27 03:37:36

+0

嗨! 我刚刚使用cudaGetLastError()测试了我的内核(在本网站中有所提及:http://www.visualization.hpc.mil/wiki/Handling_CUDA_error_messages),并且内核正在执行而没有任何错误。那么还有什么要做的调试? – duttasankha 2013-04-27 04:15:18

回答

2

我们已经修复了NVIDIA Nsight 3.0 RC2中的诸多错误。我建议所有用户尽快升级到NVIDIA Nsight 3.0。它可以从Nsight Registered Developers Program免费下载。