6

我正在运行 2 个 GPU,并且试图强制 X 服务器在一个 GPU 上运行。根据这个网站: http: //nvidia.custhelp.com/app/answers/detail/a_id/3029/~/using-cuda-and-x,我应该这样做:

应使用 xorg.conf 文件的相关“显示”部分中的 BusID 参数将 X 显示强制到单个 GPU 上。此外,应删除任何其他“显示”部分。例如:总线ID“PCI:34:0:0”

这是我的 xorg.conf 文件:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 304.64  (buildmeister@swio-display-x86-rhel47-12)  Tue Oct 30 12:04:46 PDT 2012

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

所以我尝试用正确的 BusID 修改小节显示,但它仍然不起作用,我还尝试将它放在 Device 部分中。

任何人都知道我怎么能做到这一点?

4

2 回答 2

8

如果您有 2 个 NVIDIA GPU,请获取两者的 BusID 参数。您链接的文档解释了几种方法,但nvidia-smi -a很容易。

您需要确定要保留哪个 GPU 用于显示,以及您要保留哪个 GPU 用于 CUDA。同样,这应该很明显nvidia-smi -a

假设您nvidia-smi -a包含这样的部分:

PCI
    Bus                     : 0x02
    Device                  : 0x00
    Domain                  : 0x0000
    Device Id               : 0x06D910DE
    Bus Id                  : 0000:02:00.0

然后像这样修改设备部分:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:2:0:0"
EndSection

然后重新启动。确保您保留用于展示的那个是连接了显示电缆的那个!

您可能也有兴趣阅读nvidia 驱动程序自述文件并搜索“BusID”以获取更多提示。

您链接的文档引用了“显示”部分,但应该是“设备”部分。

于 2013-08-22T14:04:53.123 回答
4

由于无法在上面的答案中添加评论,由于声誉限制,我只是将我的解决方案留在这里。

我遵循了@Robert Crovella 提供的解决方案。但它仍然对我不起作用,直到我将 BusID 更改为十进制格式

让我写更多的细节。

  • 两个 GPU:GTX 1080Ti(device0) 和 GTX 960(device1)。所以我想将 GTX 1080Ti(device0) 设置为计算卡,将 GTX 960(device1) 设置为 xorg 显示。

  • 查找他们的 BusID:您可以通过命令“lspci | 查找 BusID”。grep VGA',它将给出以下内容:

03:00.0 VGA 兼容控制器:NVIDIA Corporation Device 1b06 (rev a1)

82:00.0 VGA 兼容控制器:NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1)

所以我们得到了 device003:00.0和device1 的 BusId 82:00.0,但它们都是十六进制数字。因此,将0x03和分别转换0x82为十进制数3130

  • 添加BusID到文件中的Device部分xorg.conf

    “设备”部分

       Identifier     "Device1"
       Driver         "nvidia"   
       VendorName     "NVIDIA Corporation"
       BusID          "PCI:130:0:0"
    

    端部

注意 BusID 格式,例如“0:0”(不是“0.0”)。并且还在“屏幕”部分使用相同的设备:

“屏幕”部分

   Identifier     "Screen0"
   Device         "Device1"   
   ...

端部

  • 将显示器连接到显示 GPU,然后重新启动计算机。
  • lspci当我阅读@Piotr Dobrogost 的上述评论时,我发现了这个解决方案,并仔细检查了 xorg.conf 文件中使用的十进制格式 BusID,与我找到这篇文章时提供的 BusID vis 命令不同。
于 2018-10-12T18:29:16.673 回答