0

我对 CUDA 很陌生,在这里我的裤子座位上飞了一下......

我正在尝试在我没有管理员权限的远程计算机上调试我的 CUDA 程序。我用 cuda-gdb 编译我的程序,nvcc -g -G然后尝试调试它。但是,只要 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 -9cuda-gdb 和cuda_clustered_(我假设后者是我的二进制文件的一部分)。

这台机器有两个 GPU,正在运行 CUDA 4.1(我相信 - 安装了很多,但这是我设置的那个)PATH并且LD_LIBRARY_PATH编译 + 运行 deviceQuery 和 bandwidthTest 很好。

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

4

1 回答 1

0

弄清楚了!事实证明,cuda-gdb 讨厌 csh。

如果您正在运行 csh,它将导致 cuda-gdb 出现上述异常行为。即使从 csh 中运行 bash,然后运行 ​​cuda-gdb,我仍然看到了这种行为。您需要以 bash 的形式启动您的 shell,并且只能以 bash 的形式启动。

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

所以即使我在运行 bash,因为它是由 csh 启动的,cuda-gdb 也会出现上述异常行为。摆脱'exec'命令,所以我直接运行csh,上面什么都没有,仍然显示出这种行为。

最后,我不得不让 IT 将我的 shell 更改为直接 bash(经过他们耐心地排除故障之后)。现在它按预期工作。

于 2012-05-22T22:03:08.017 回答