当我尝试调试任意CUDA应用程序时,例如来自Nvidia的GPU计算SDK 4.0的矩阵乘法或convolutionSeparable样品,我总是得到相同的输出:CUDA Nvidia NSight调试:“CUDA网格启动失败”
Parallel Nsight Debug
CUDA grid launch failed: CUcontext: 2059192 CUmodule: 348912936 Function: _Z9matrixMulILi32EEvPfS0_S0_ii
……
……
而且具有以下内容的文件被显示出来:
Parallel Nsight CUDA Debugger
应用贝因g使用Nexus CUDA调试器进行调试,无法找到任何关联的源代码 。这可能是由于多种原因:
1)CUDA尚未初始化。 确保cuInit已被调用,并返回成功的结果。
2)没有创建CUDA上下文。 创建上下文后,可以在上下文中检查内存。每个上下文 在Visual Studio线程视图中显示为单个“线程”。 (调试| Windows |主题)
3)在任何情况下都没有活动的CUDA网格。 必须启动一个网格才能达到断点。
4)您已在Visual Studio线程视图中选择“默认上下文”。 当上下文没有可用的实际CUDA 时,此上下文是一个占位符。它不显示真实的数据。
5)没有加载CUDA模块。 您可以通过显示 Visual Studio模块视图来查看哪些模块已加载到每个CUDA上下文中。 (Debug | Windows | Modules)
6)未找到加载的.cubin的符号。 该模块需要使用调试信息进行构建。建筑时请指定 -G0开关。
7)运行内核时网格启动失败。
相应的“.CU”文件中的每个断点在运行过程中完全被忽略。当我只运行应用程序时,如果没有Nsight Debugging,程序将毫无问题地执行。
我能做些什么来解决这个问题?
我的设置:
- 1xIntel GPU和1x NV 570GTX,我想使用本地调试选项
- 赢7专业版64位
- 开发信封:VS2008或VS2010
- CUDA 4.0 & Parallel Nsight 2.0
- NV驱动程序Vers。:285。38
- WPF是禁用
- TDR被禁用
- Windows上运行的基本模式(无航空)
- 项目Propertys:CUDA运行时API - > GPU->生成GPU调试信息 - >是(-G0)
我的显示器目前由intel设备驱动,这肯定是因为否则这会导致一些其他NSight错误消息。我知道,因为我已经尝试过了。据我所知,需要一个额外的任意图形设备,在我看来这听起来很合理。 – Impulse
@Impulse您是否尝试过Parallel Nsight示例(而不是CUDA SDK示例)? – Tom
是的,我尝试过SDK样本,并且使用Parallel Nsight提供了matrixMul样本。 输出为这个特殊的例子: 并行Nsight调试 CUDA网格发射失败:CUcontext:46427088 CUmodule:139693888功能:_Z9matrixMulPfS_S_ii – Impulse