如何为 xserver 配置 iGPU 以及为 CUDA 工作配置 nvidia GPU

如何为 xserver 配置 iGPU 以及为 CUDA 工作配置 nvidia GPU

我有 Intel 板载 GPU 和 NVIDIA GPU。我正在运行 Ubuntu 18.04。

如何配置双 GPU 设置,以便英特尔板载 iGPU 驱动显示器,而 NVIDIA GPU 专门用于机器学习 CUDA 工作?

答案1

我首先安装了 NVIDIA 驱动程序和 CUDA 软件包本指南。但是,重启后,我最终/usr/lib/xorg/Xorg在输出中出现了nvidia-smi。这不太好,因为我需要将所有 NVIDIA GPU RAM 都用于我的工作。

经过一些研究,我找到了一个解决我的问题的解决方案:

我创建了/etc/X11/xorg.conf以下内容:

Section "Device"
    Identifier      "intel"
    Driver          "intel"
    BusId           "PCI:0:2:0"
EndSection

Section "Screen"
    Identifier      "intel"
    Device          "intel"
EndSection

(如果你尝试做同样的事情,请务必检查你的 GPU 在哪里。我的 GPU 位于 上,00:02.0翻译为PCI:0:2:0

% lspci  | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 3e92
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 (rev a1)

重新启动后,xorg 和其他程序不再出现在 的输出中nvidia-smi。并且我能够使用带有 CUDA-10.0 的 pytorch。

请注意,我仍然安装了所有 NVIDIA 驱动程序,但它们不会造成干扰。


更新:对于 Ubuntu 20.04,需要进行一些额外的更改才能实现此功能。您将找到完整的详细信息这里

答案2

让我分享一下在装有 Arch Linux 和 Gnome 桌面环境的 Razer Blade 15 笔记本电脑上帮助我的秘诀。

最初,我使用 Wayland 会话启动 Gnome,当时该会话与 NVIDIA 驱动程序不兼容,因此我自然而然地使用集成图形适配器进行显示,并使用 NVIDIA GPU 进行深度学习。但在最近更新后,GDM 会话开始回退到 Xorg,并以 NVIDIA GPU 作为主 GPU。问题是:

  • 它减少了可用的 GPU RAM
  • 在神经网络训练期间,它使整个系统陷入瘫痪
  • 它增加了功耗(=缩短了电池寿命)

启动后我运行了nvidia-smi。我本以为会看到,但我看到的是使用我的 NVIDIA GPU 的进程No running processes found列表。这意味着 Gnome Display Manager 使用 Xorg 会话并以 NVIDIA GPU 作为主 GPU。Xorg

我检查了/var/log/Xorg.0.log

(II) xfree86: Adding drm device (/dev/dri/card1)
(II) systemd-logind: got fd for /dev/dri/card1 226:1 fd 11 paused 0
(II) xfree86: Adding drm device (/dev/dri/card0)
(II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 12 paused 0
(**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
(**) OutputClass "nvidia" setting /dev/dri/card1 as PrimaryGPU

(**)意味着设置已从配置文件中读取!我发现配置文件是 /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf。我更改了配置文件以将英特尔集成图形适配器设置为主 GPU:

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
    Option "PrimaryGPU" "yes"                   # <<<<<< add this string
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
#   Option "PrimaryGPU" "yes"                   # <<<<<< comment this string
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

答案3

由于我没有发表评论的资格,因此我在此分享与 Maksym Ganenko 的回答相关的结果:我尝试在 ubuntu 18.04 上使用该解决方案,在该解决方案中,我使用 kde-plasma 或 ubuntu 运行 gdm3。您提到的文件 /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf在我的系统上名为/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf,可能是因为我安装了 nvidia-prime 一段时间了。编辑此文件的问题在于,在我的安装中,/usr/bin/gpu-manager 在启动新的 xsession 时会生成此文件,因此所有编辑都会丢失。如此处所述避免在 Xorg 和 Plasma 上使用 nvidia 卡遵循此处给出的建议gpu-manager 覆盖 xorg.conf解决方案是通过以下方式保护生成的文件不被更改

chattr +i /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf

chmod 444 可能会做同样的事情,但我只是使用了gpu-manager 覆盖 xorg.conf

答案4

我想添加另一种方法,以阻止 Nvidia 卡处理我的显示器。我只是通过选择 Wayland 而不是 Xorg 来启动 gnome。由于 Nvidia 不支持 Wayland,登录后,nvidia-smi 显示没有正在运行的进程。

不过,我仍然可以使用 Nvidia 来运行 Tensorflow 之类的程序。

相关内容