Как настроить 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.

Другие вопросы по тегам