我尝试使用 cuda-gdb 调试我的 CUDA 应用程序,但遇到了一些奇怪的错误。
我设置了选项-g -G -O0
构建我的应用程序。我可以在没有 cuda-gdb 的情况下运行我的程序,但没有得到正确的结果。因此我决定使用 cuda-gdb,但是,在使用 cuda-gdb 运行程序时收到以下错误消息
Error: Failed to read the valid warps mask (dev=1, sm=0, error=16).
这是什么意思?为什么sm=0
是什么意思error=16
?
Update 1:我尝试使用 cuda-gdb 来处理 CUDA 示例,但由于同样的问题而失败。我刚刚按照 NVIDIA 的说明安装了 CUDA 6.0 Toolkit。难道是我系统的问题?
Update 2:
- 操作系统 - CentOS 6.5
- GPU
- 1 个 Quadro 400
- 2 特斯拉 C2070
- 我的程序仅使用 1 个 GPU,但我选择的任何 GPU 都收到相同的错误消息
- CUDA 版本 - 6.0
- GPU Driver
- NVRM 版本:NVIDIA UNIX x86_64 内核模块 331.62 2014 年 3 月 19 日星期三 18:20:03 PDT
- GCC版本:gcc版本4.4.7 20120313(Red Hat 4.4.7-4)(GCC)
Update 3:
我尝试在 cuda-gdb 中获取更多信息,但得到以下结果
(cuda-gdb) info cuda devices
Error: Failed to read the valid warps mask (dev=1, sm=0, error=16).
(cuda-gdb) info cuda sms
Focus not set on any active CUDA kernel.
(cuda-gdb) info cuda lanes
Focus not set on any active CUDA kernel.
(cuda-gdb) info cuda kernels
No CUDA kernels.
(cuda-gdb) info cuda contexts
No CUDA contexts.
实际上,这个问题仅针对一些旧的 NVIDIA GPU(例如“Quadro 400”、“GeForce GT220”或“GeForce GT 330M”等)。
在 Liam Kim 的设置中,cuda-gdb 应该通过设置环境变量“CUDA_VISIBLE_DEVICES”来正常工作,并让 cuda-gdb 特别在 Tesla C2070 GPU 上运行。
IE
$export CUDA_VISIBLE_DEVICES=0(或2)
- 可以通过运行 cuda 示例“deviceQuery”找到确切的 CUDA 设备索引。
现在,这个问题已经得到解决,该修复将在下一个 CUDA 版本中为 CUDA 开发人员提供(将于 2014 年 7 月初左右发布)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)