【发布时间】:2012-05-15 09:02:26
【问题描述】:
我对 CUDA 还很陌生,在这里我有点不知所措......
我正在尝试在我没有管理员权限的远程计算机上调试我的 CUDA 程序。我用nvcc -g -G 编译我的程序,然后尝试用cuda-gdb 对其进行调试。但是,只要 gdb 调用内核(甚至不必输入它,并且它不会发生在主机代码中),我就会得到:
(cuda-gdb) run
Starting program: /path/to/my/binary/cuda_clustered_tree
[Thread debugging using libthread_db enabled]
[1]+ Stopped cuda-gdb cuda_clustered_tree
cuda-gdb 然后将我转储回我的终端。如果我再次尝试运行 cuda-gdb,我会得到 p>
An instance of cuda-gdb (pid 4065) is already using device 0. If you believe
you are seeing this message in error, try deleting /tmp/cuda-dbg/cuda-gdb.lock.
恢复的唯一方法是kill -9 cuda-gdb 和cuda_clustered_(我假设后者是我的二进制文件的一部分)。
这台机器有两个 GPU,正在运行 CUDA 4.1(我相信 - 安装了很多,但这是我将 PATH 和 LD_LIBRARY_PATH 设置为的那个)并编译 + 运行 deviceQuery 和 bandwidthTest 很好。
如果需要,我可以提供更多信息。我搜索了所有可以在网上找到的地方,但没有找到任何帮助。
【问题讨论】:
-
在收到
[1]+ Stopped消息后尝试在终端中发出fg命令:看起来调试器进程由于某种原因已暂停(要自己暂停进程,请按Ctrl-Z)和@987654331 @ 将恢复它并带到前台 -
不行。它只是与
uda-gdb cuda_clustered_tree [New Thread 0x7ffff1c09700 (LWP 6001)]和[Context Create of context 0x692010 on Device 0]的行相呼应。否则它似乎死了——我可以输入文本,但是当我按下回车键时什么也没有发生。 Ctrl+C 和 Ctrl+D 也不做任何事情。只有 Ctrl+Z 做任何事情——将其发送到后台,并像以前一样让它成为僵尸进程。 -
尝试调试一些SDK程序。如果对他们来说
cuda-gdb工作正常,那么您应该将随机错误提交给 nVidia 开发人员。以我的经验,cuda-gdb因 SEGFAULT 崩溃等情况并不罕见...... -
嗯,不,它似乎也与演示应用程序一起崩溃。不确定这表明什么。