在两个 GPU 上运行的多个 Xorg 进程

在两个 GPU 上运行的多个 Xorg 进程

以下行为在过去并不常见。我在 Ubuntu 18.04 系统上有两个 GPU:一个用于双显示器显示,另一个用于 GPU 计算。启动时,我从未在我的计算 GPU 上看到过进程。最近,我注意到多个 Xorg 进程在运行,我的两个 GPU 上各有 2 个进程。我还看到 gnome-shell 运行两个进程。这是一个问题吗?如何解决?

(我正在对此进行调查,以了解为什么我在暂停后无法使用计算 GPU 进行计算。)

$ nvidia-smi
Tue Aug 18 11:05:47 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  TITAN RTX           On   | 00000000:1A:00.0 Off |                  N/A |
| 41%   34C    P8    10W / 280W |     11MiB / 24220MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 207...  On   | 00000000:68:00.0  On |                  N/A |
| 22%   40C    P5    15W / 215W |    811MiB /  7979MiB |      1%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      2038      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A      5566      G   /usr/lib/xorg/Xorg                  4MiB |
|    1   N/A  N/A      2038      G   /usr/lib/xorg/Xorg                 73MiB |
|    1   N/A  N/A      2078      G   /usr/bin/gnome-shell              178MiB |
|    1   N/A  N/A      5566      G   /usr/lib/xorg/Xorg                481MiB |
|    1   N/A  N/A      5740      G   /usr/bin/gnome-shell               33MiB |
|    1   N/A  N/A     23000      G   ...AAAAAAAAA= --shared-files       41MiB |
+-----------------------------------------------------------------------------+

答案1

我遇到了类似的问题,ubuntu 20.04,两个 GPU,Tesla 和 GTX 卡,可能不相关,因为我认为它适用于任何 GPU 配置,并且我的目的是使用 GTX GPU 进行视频输出并将 Tesla GPU 专用于 CUDA仅有的。我尝试了多种方法,建议您查看 nvidia xorg 文档(https://download.nvidia.com/XFree86/Linux-x86_64/460.67/README/xconfigoptions.html)和 xorg 文档(https://manpages.debian.org/jessie/xserver-xorg-core/xorg.conf.5.en.html)了解他们的目的。

我的建议是第一的使用该nvidia-xconfig工具创建基本的 xorg.conf 文件(例如sudo nvidia-xconfig -a),然后按如下方式修改/编辑。

一些相关的变化:

Section "ServerLayout"
  (...)
  Option "AutoAddGPU" "false"
EndSection

选项 "AutoAddGPU" "boolean" 如果禁用此选项,则不会从 udev 后端添加任何 GPU 设备。默认启用。 (可能需要禁用才能设置 Xinerama)。

使用lspci我找到了两张卡的 PCI id,在我的例子中,Tesla 是 9.0.0,GTX 是 5.0.0,所以你必须使用你的身份证对于您的用例,不要使用我的!然后我为每张卡创建了一个条目,例如

Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
   BoardName      "Tesla"
   BusID          "PCI:9:0:0"
   Option         "Accel" "false"
   Option "ProbeAllGpus" "false"
   Option "NoLogo" "true"
   Option "UseEDID" "false"
   Option "UseDisplayDevice" "none"
   Option "MultiGPU" "false"
EndSection

选项 "ProbeAllGpus" "boolean" 请注意,禁用此选项可能会影响通过 nvidia 设置的可配置性,因为 X 驱动程序不知道当前未使用的 GPU 或连接到它们的显示设备。

此外,可以为“UseDisplayDevice”选项指定特殊值“none”。当给定该值时,将禁用显示硬件的任何编程。 NVIDIA 驱动程序不会为此 X 屏幕执行任何模式验证或模式设置。这是为了与 CUDA 结合使用

Section "Device"
  Identifier     "Device1"
  Driver         "nvidia"
  VendorName     "NVIDIA Corporation"
  BoardName      "GTX"
  BusID          "PCI:5:0:0"
EndSection

然后在“屏幕”部分,仅使用“Device1”作为您想要用作视频输出的卡,例如:

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

就我而言,我有一个连接到 GTX 卡的多显示器设置,因此它比这更复杂一些,但它应该为您提供一个很好的起点。

我仍然遇到问题并尝试使用此配置调试挂起/恢复。

相关内容