我有 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 之类的程序。