我正在使用一些使用 CUDA 在 GPU 上运行某些东西的软件。
如果我使用 ssh 或 vnc 连接到机器,并尝试运行程序,则会收到错误消息,提示未启用任何 CUDA 设备。我必须前往机器并进行物理登录,然后键入“startx”以让其检测设备。它也可以用于使用 X 会话的机器,但必须在机器上的某个位置启动才能使 CUDA 正常工作。有没有办法通过 SSH 会话“startx”,这样就可以正常工作,而我不必前往机器并登录?
谢谢
答案1
如果您对运行 CUDA 的机器具有 root 访问权限或者可以让某人进行此项更改,则可以对其进行配置,以使 X 不需要使用 CUDA。
为此,请创建一个名为的文件,85-cuda.rules
其/etc/udev/rules.d
内容如下:
SUBSYSTEM=="module", KERNEL=="nvidia", RUN+="/lib/udev/cuda.sh"
cuda.sh
然后,创建一个名为的文件,/lib/udev
其内容如下:
#!/bin/sh
mknod -m 660 /dev/nvidia1 c 195 1
chown root:video /dev/nvidia1
mknod -m 660 /dev/nvidiactl c 195 255
chown root:video /dev/nvidiactl
如果机器有多个 GPU,请重复前两行,将两行都更改为nvidia1
,并将第一行的nvidia2
最后一行更改为。对机器中剩余的每张卡重复此操作。保存后,您需要使其可执行:1
2
chmod +x /lib/udev/cuda.sh
最后,运行/lib/udev/cuda.sh
一次即可使其正常工作,无需重新启动。
答案2
X (xorg) 的设计是客户端-服务器模型。通过 SSH 连接...您的默认“x-server”不是远程计算机的 x-session。它将尝试连接到通过隧道运行的 x-session。在许多基于 x 的应用程序中,您可以选择指定在哪个 x-server 上显示,因此您可能能够告诉您的应用程序在远程机器的 x 服务器上启动。 http://www.x.org/archive/X11R6.8.0/doc/Xorg.1.html
至于 VNC,这完全取决于它的配置方式。大多数情况下,当您连接时,vnc 将创建一个不使用启用 gpu 的 x 服务器的新会话。因此,它也不会允许您在未启用 gpu 的 x 服务器下启动启用 gpu 的应用程序。老实说,我不使用 VNC,所以我不是询问如何重新配置它以与启用 gpu 的 x 服务器一起工作的人。
答案3
使用 ssh 时,请包含 -X 选项。这将使图形应用程序能够通过 SSH 运行。只需像往常一样从命令行启动程序,您就会看到它打开了。
ssh -X user@host
这样,您就不必为了运行一个或两个应用程序而启动整个会话。
否则,您能否将 x 作为后台进程启动?(在最后使用 &)。