Nsight调试启动和正常操作系统启动之间的差异

时间:2013-07-30 19:46:12

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

我想知道什么设置“Debug with Nsight”选项除了简单地通过Visual Studio或OS的命令行执行二进制文件。

我问的原因是因为我的程序运行良好,如果我通过“使用Nsight调试”运行它,但是当使用Visual Studio的启动按钮启动它时,我在驱动程序崩溃后得到一些未指定的cudaErrors和一些cudaMemcpys(或者只是启动可执行文件),这让我相信Nsight必须具有某些特定的启动参数才能使程序正常运行。

2 个答案:

答案 0 :(得分:1)

由于内核执行时间太长,当您的应用程序遇到windows TDR event时,会发生API错误,然后发生API错误。您可以通过modifying the system registry解决此问题,或者将Quadro或Tesla GPU放在TCC mode中,或者缩短内核的运行时间。

使用nsight进行调试时,由于各种原因(单步,断点和其他原因),内核执行可能会停止,然后重新启动,具体取决于您在调试会话中的操作。暂停内核执行允许在没有TDR事件的情况下满足Windows监视程序。

答案 1 :(得分:0)

CUDA nSight调试器允许您逐行调试CUDA内核,不能使用标准的Visual Studio调试器执行此操作。

据推测,nSight执行一些代码注入以使其能够检测内核的运行时,它也可能在您的设置上使用,当使用nSight进行调试时,您的内核可能无法在GPU上执行。这些可能是调试器之间出现错误的原因。我知道当我使用它们时,我有类似的不一致。

如果您通过nSight分析器运行程序,它应该能够清楚地记录memCpy错误。