【发布时间】:2011-12-09 03:52:00
【问题描述】:
当我尝试调试任意 CUDA 应用程序时,例如Nvidia GPU Computing SDK 4.0 中的矩阵乘法或卷积可分离样本,我总是得到类似于以下内容的输出:
Parallel Nsight Debug
CUDA grid launch failed: CUcontext: 2059192 CUmodule: 348912936 Function: _Z9matrixMulILi32EEvPfS0_S0_ii
……
……
并且出现了一个包含以下内容的文件:
Parallel Nsight CUDA Debugger
使用 Nexus CUDA 调试器调试的应用程序无法 找到任何相关的来源。这可能有多种原因:
1) CUDA 尚未初始化。 确保 cuInit 已被调用,并且返回了成功的结果。
2) 没有创建 CUDA 上下文。 一旦创建了上下文,就可以在上下文中检查内存。每个上下文 在 Visual Studio 线程视图中显示为单个“线程”。 (调试 | Windows | 线程)
3) 在任何上下文中都没有活动的 CUDA 网格。 必须启动网格才能到达断点。
4) 您已在 Visual Studio 线程视图中选择了“默认上下文”。 此上下文是在没有可用的实际 CUDA 时显示的占位符 上下文。它不显示真实数据。
5) 没有加载任何 CUDA 模块。 您可以通过显示 Visual Studio 模块视图。 (调试 | Windows | 模块)
6) 未找到加载的 .cubin 的符号。 该模块需要使用调试信息构建。请指定 -G0 构建时切换。
7) 运行内核时网格启动失败。
相应“.cu”文件中的每个断点在运行期间都将被完全忽略。当我只运行应用程序时,没有 Nsight 调试,程序执行没有任何问题。
我能做些什么来解决这个问题?
我的设置:
- 1xIntel GPU 和 1x NV 570GTX,我想使用本地调试选项
- Win 7. Pro 64Bit
- 开发环境:VS2008 或 VS2010
- CUDA 4.0 和并行 Nsight 2.0
- NV 驱动程序版本:285.38
- WPF 已禁用
- TDR 已禁用
- Windows 在基本模式下运行(无 aero)
- 项目属性:Cuda Runtime API -> GPU-> 生成 GPU 调试信息 -> 是 (-G0)
【问题讨论】:
标签: debugging breakpoints gpu cuda