我想知道什么设置“Debug with Nsight”选项除了简单地通过Visual Studio或OS的命令行执行二进制文件。
我问的原因是因为我的程序运行良好,如果我通过“使用Nsight调试”运行它,但是当使用Visual Studio的启动按钮启动它时,我在驱动程序崩溃后得到一些未指定的cudaErrors和一些cudaMemcpys(或者只是启动可执行文件),这让我相信Nsight必须具有某些特定的启动参数才能使程序正常运行。
答案 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错误。