cuda-gdb在遇到内核调用时以“[1]停止”退出

时间:2012-05-06 16:29:36

标签: cuda cuda-gdb

我对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,我会得到

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(我相信 - 安装了很多,但那是我设置PATHLD_LIBRARY_PATH的那个)并且编译+运行deviceQuery和bandwidthTest很好。

如果需要,我可以提供更多信息。我搜索了我在网上找到的所有地方,但没有找到任何帮助。

1 个答案:

答案 0 :(得分:0)

想出来!事实证明,cuda-gdb讨厌csh。

如果您正在运行csh,则会导致cuda-gdb出现上述异常行为。即使从csh中运行bash,然后运行cuda-gdb,我仍然看到了这种行为。你需要以bash开始你的shell,并且只需要bash。

在机器上,默认shell是csh,但我使用bash。我不允许直接更改它,因此我将'exec / bin / bash --login'添加到我的.login脚本中。

所以即使我正在运行bash,因为它是由csh启动的,cuda-gdb会出现上述异常行为。摆脱'exec'命令,所以我直接运行csh,顶部没有任何东西,仍然显示出这种行为。

最后,我必须让IT部门直接将我的shell更改为bash(经过多次患者故障排除后)。现在它按预期工作。