Как настроить iGPU для xserver и nvidia GPU для работы CUDA
У меня есть встроенный графический процессор Intel и графический процессор NVIDIA. Я использую Ubuntu 18.04.
Как настроить установку с двумя графическими процессорами, чтобы встроенный в iGPU процессор Intel управлял монитором, оставляя NVIDIA GPU исключительно для работы CUDA с машинным обучением?
3 ответа
Сначала я установил драйверы NVIDIA и пакеты CUDA, следуя этому руководству. За исключением того, что после перезагрузки я закончил с /usr/lib/xorg/Xorg
показывая на выходе nvidia-smi
, Это было нехорошо, так как мне нужно было иметь всю оперативную память NVIDIA GPU для своей работы.
После некоторых исследований я нашел решение, которое решило мою проблему:
я создал /etc/X11/xorg.conf
со следующим содержанием:
Section "Device"
Identifier "intel"
Driver "intel"
BusId "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSection
(если вы попытаетесь сделать то же самое, обязательно проверьте, где находится ваш графический процессор. Шахта была включена 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
, И я смог использовать Pytorch с CUDA-10.0.
Обратите внимание, что у меня все еще установлены все драйверы NVIDIA, но они не мешают.
Позвольте мне поделиться своим рецептом, который помог мне на ноутбуке Razer Blade 15 с Arch Linux и рабочей средой Gnome.
Изначально я начал Gnome с сеанса Wayland, который в то время был несовместим с драйвером NVIDIA, поэтому, естественно, у меня был встроенный графический адаптер для дисплея и графический процессор NVIDIA для глубокого обучения. Но после недавнего обновления сеанс GDM начал переходить на Xorg с графическим процессором NVIDIA в качестве основного графического процессора. Проблема заключалась в том, что:
- это уменьшило доступную память GPU
- он поглотил всю систему во время обучения нейронной сети
- это увеличило энергопотребление (= меньше время автономной работы)
Я побежал nvidia-smi
после запуска. Я ожидал увидеть No running processes found
, но я видел список Xorg
процессы, которые использовали мой NVIDIA GPU. Это означает, что Gnome Display Manager использовал сеанс Xorg с графическим процессором NVIDIA в качестве основного графического процессора.
Я осмотрел /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
, Я изменил файл конфигурации, чтобы установить встроенный графический адаптер Intel в качестве основного графического процессора:
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
Поскольку у меня нет репутации комментировать, я делюсь здесь результатами, связанными с ответом Максима Ганенко: я попробовал решение на своем Ubuntu 18.04, где я запускаю gdm3 с kde-plasma или Ubuntu. Файл, который вы упомянули /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, поэтому все изменения теряются. Как описано здесь, избегайте использования карты nvidia для Xorg с плазмой, следуя приведенным здесь советам. Gpu-manager перезаписывает xorg.conf, решение состоит в том, чтобы защитить созданный файл от изменений с помощью
chattr +i /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
Может быть, chmod 444 будет делать то же самое, но я просто использовал решение, предложенное в gpu-manager overwrites xorg.conf.
Я хотел бы добавить другой способ, которым я в настоящее время запрещаю карте Nvidia обрабатывать мой дисплей. Я просто загружаюсь в gnome, выбирая Wayland вместо Xorg. Так как Nvidia не поддерживает Wayland, после входа в систему nvidia-smi не показывает запущенный процесс.
Тем не менее, я все еще могу использовать Nvidia для таких вещей, как Tensorflow.