试图唤醒 gpu 中的断点

Posted

技术标签:

【中文标题】试图唤醒 gpu 中的断点【英文标题】:Trying to wake up breaking points in gpu 【发布时间】:2014-03-15 20:09:05 【问题描述】:

我想使用 Nsight 进行调试,但编译器不会在断点处停止。我已启用生成调试信息的选项。

这里是命令行:

驱动 API(NVCC 编译类型为 .cubin、.gpu 或 .ptx)

设置 CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\" "C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v5.5\bin\nvcc.exe" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -G --keep-dir x64\Debug -maxrregcount=0 --machine 32 --compile -cudart static -o MP7.dir\Debug\%(文件名)%(扩展名) .obj "%(FullPath)"

运行时 API(NVCC 编译类型为混合对象或 .c 文件)

设置 CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\" "C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v5.5\bin\nvcc.exe" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -G --keep-dir x64\Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -Xcompiler "/EHsc /nologo /Zi " -o MP7. dir\Debug\%(文件名)%(扩展名).obj "%(FullPath)"

当 Nsight 调试器启动断点更改时,会出现一个感叹号,其中包含以下框信息:

The break point will not be currently be hit No CUDA device code for source file c:\users\..\file.cu. Did you enable device information in your project? 

.ilk.pdb 文件与 .exe 位于同一文件夹中。此外,在作为Working directory 的 Nsight 调试器中,设置了包含上述文件的文件夹。

此外,在内核函数内部设置了断点。

如何找出问题所在?我陷入了僵局。

谢谢!

PS: Win 7 64x,VS2010 64x 解决方案,Nsight 3.2 64x,Cuda sdk 5.5 64x,Nsight 在 sdk 样本中运行良好,GeForce 9600 GT(计算能力 1.1)

【问题讨论】:

也许你对Cuda-gdb not stopping at breakpoints inside kernel这个讨论感兴趣。 谢谢!还将compute_20,sm_20 与cc 一起使用。 1.1 损坏了我的结果。我该怎么处理那个帖子?它是否被视为重复?我应该删除它吗? 【参考方案1】:

您的设备是计算能力 1.1

但您正在为计算能力 2.0 进行编译:“代码生成 compute_20,sm_20”

因此没有与您的计算能力 1.1 设备对应的设备代码,因此您无法正确设置或命中断点。

将代码生成更改为compute_11,sm_11 以匹配您的设备。

【讨论】:

我想在共享内存中使用 atomicAdd。使用配置,compute_11,sm_11 返回error : Ptx assembly aborted due to errors。共享内存atomicAdds 不适用于cc. 1.1?我必须在全局内存中工作? 也许您应该阅读atomics 上的编程指南部分。共享内存中的原子添加需要 cc 1.2

以上是关于试图唤醒 gpu 中的断点的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 TensorFlow 中的“gpu 内存不足”问题

为啥 xcode 编辑方案中的 GPU 帧捕获中没有 GLES 选项

在 TensorFlow 中的 GPU 之间平均分配 RNN 内存消耗

vivo手机中的语音唤醒啥意思

具有多个断点的可拖动线

多线程之Java中的等待唤醒机制