首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUDA调试:"CUDA网格启动失败“

CUDA调试:"CUDA网格启动失败“
EN

Stack Overflow用户
提问于 2011-10-17 09:31:16
回答 4查看 6.6K关注 0票数 3

当我尝试调试任意的CUDA应用程序,例如Nvidia GPU计算SDK4.0中的矩阵乘法或convolutionSeparable示例时,我总是得到类似于以下内容的输出:

代码语言:javascript
复制
Parallel Nsight Debug
CUDA grid launch failed: CUcontext: 2059192 CUmodule: 348912936 Function: _Z9matrixMulILi32EEvPfS0_S0_ii
……
……

并显示一个具有以下内容的文件:

代码语言:javascript
复制
                   Parallel Nsight CUDA Debugger

使用Nexus CUDA调试器调试的应用程序无法找到任何相关的源。这可能是出于以下几个原因:

1)尚未初始化数据自动化系统。确保cuInit已被调用,并返回一个成功的结果。

2)没有建立任何数据自动化系统上下文。一旦创建了上下文,就可以在上下文中检查内存。每个上下文在Visual线程视图中显示为单个“线程”。(线程)

3)在任何情况下都没有有效的数据自动化系统网格。必须启动网格才能命中断点。

4)在Visual线程视图中选择了“默认上下文”。此上下文是一个占位符,显示在没有可用的实际数据自动化系统上下文时。它没有显示真实的数据。

5)没有加载任何数据自动化系统模块。通过显示视图,可以看到在每个CUDA上下文中加载了哪些模块。(调试\x{e76f} Windows模块)

6)加载.cubin时未发现符号。该模块需要使用调试信息构建。请在生成时指定-G0开关。

7)运行内核时网格启动失败。

在运行过程中,相应的“.cu”文件中的每个断点都会被完全忽略。当我只是运行应用程序,没有Nsight调试,程序执行没有任何问题。

我能做些什么来解决这个问题?

我的设置:

  • 1xIntel GPU和1x NV 570 GPU,我想使用本地调试选项
  • 赢7. Pro 64位
  • 开发环境: VS2008或VS2010
  • CUDA 4.0与并行Nsight 2.0
  • NV驱动程序: 285.38
  • WPF被禁用
  • TDR是残疾的
  • Windows在基本模式下运行(不使用空气)
  • 项目属性: Cuda -> GPU-> Generate调试信息->是(-G0)
EN

回答 4

Stack Overflow用户

发布于 2011-10-17 11:37:54

首先,您需要确保您的显示器是由英特尔集成图形驱动,而不是NVIDIA GPU。这是因为当您在CUDA代码中碰到一个断点时,您正在延迟整个GPU,所以如果使用相同的GPU来显示,那么您的系统就会自然锁定。

注意,用于并行Nsight的硬件要求表示您需要两个支持的GPU ,而您只有一个,但是如果我正确理解可以使用一个非Intel来显示(我还没有尝试过)。

假设上面的工作是有效的,那么您应该从尝试包含在并行Nsight中的示例开始。您可以在“开始”菜单中的并行Nsight菜单项中找到它们。

票数 2
EN

Stack Overflow用户

发布于 2011-10-25 15:47:24

库达网格的推出有多种原因。这个可能访问的数组超出了其分配的大小。在x86世界中,所谓的分割错误。我通过有选择地注释掉正在测试的部分内核来调试这些代码,直到错误消失。(我们以前称之为“狼栅栏调试”)。网格启动失败的另一个原因是内核执行时间过长(1秒或2秒)。

调试器没有帮助的原因是调试器只在一个块中停止了一个线程!您的访问错误将在此之前出现。此外,您也不能使用printf来查找错误,因为在网格启动失败时,输出不会被返回。

票数 2
EN

Stack Overflow用户

发布于 2017-05-24 10:23:39

要在已经给出的答案的基础上添加潜在的解决方案,一种避免错误的方法是运行具有管理员权限的NSight监视器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7791826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档