Избегайте использования карты nvidia для Xorg с плазмой

У меня есть ноутбук Dell XPS 15 9570 с Intel и NVIDIA GPU под управлением Ubuntu Linux 18.04 и я хотел бы использовать карту NVIDIA исключительно для обучения глубоких нейронных сетей. Мне удалось запустить X-сервер на Intel после

Как настроить igpu для xserver и nvidia gpu для cuda?

он отлично работает, когда в gdm3 я выбираю для входа в систему, используя оболочку gnome (Ubuntu Wayland). Запуск nvidia-smi показывает, что на GPU не запущен процесс. Однако теперь я хотел попробовать KDE с плазмой и там X server заканчивается на NVIDIA GPU.

(base) ooo: (~) 505> nvidia-smi 
Sat Jul 13 14:30:18 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   50C    P5    N/A /  N/A |     66MiB /  4042MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      2073      G   /usr/lib/xorg/Xorg                            66MiB |
+-----------------------------------------------------------------------------+

Я попытался для X-сервера использовать Intel, добавив два файла конфигурации

/etc/X11/xorg.conf.d/01-noautogpu.conf /etc/X11/xorg.conf.d/20-intel.conf

в /etc/X11/xorg.conf.d, как описано здесь

https://gist.github.com/s41m0n/323513c95290c85f7054384ac34c41c5

В результате, к сожалению, после входа в систему экран остается черным. Кажется, что сама плазма-оболочка находит и использует NVIDIA GPU.

Любая идея, как заставить плазму использовать Intel GPU будет очень цениться.

1 ответ

Решение

После обнаружения вопросов и ответов здесь Как настроить iGPU для xserver и nvidia GPU для работы CUDA, в частности, ответ пользователя 890178, и изучив системный журнал, я наконец-то обнаружил, что это не плазма, которая делает что-то конкретное, но проблема та же для gnome и плазменная оболочка при использовании Xorg. С Xorg gpu-manager.service

/lib/systemd/system/gpu-manager.service

запускается дисплеем-менеджером

/etc/systemd/system/display-manager.service.wants/gpu-manager.service

и gpu-manager обнаруживает nvidia и записывает файл

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

который содержит

# DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager

Section "OutputClass"
    Identifier "Nvidia Prime"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "IgnoreDisplayDevices" "CRT"
    Option "PrimaryGPU" "Yes"
    ModulePath "/x86_64-linux-gnu/nvidia/xorg"
EndSection

Этот файл не используется Wayland, поэтому карта nvidia не используется, но он используется для оболочки gnome на Ubuntu и Plasma. Так что на самом деле оба будут использовать карту nvidia для Xorg.

Решение - это вариант ответа Максима Ганенко на тот же вопрос, что и выше, что означает замену /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf на

# DO NOT EDIT. AUTOMATICALLY GENERATED BY gpu-manager

Section "OutputClass"
    Identifier "Nvidia Prime"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "IgnoreDisplayDevices" "CRT"
    # Option "PrimaryGPU" "Yes"   <<< commented out
    ModulePath "/x86_64-linux-gnu/nvidia/xorg"
EndSection


# added 
Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
    Option "PrimaryGPU" "yes"    
EndSection

и, кроме того, чтобы gpu-manager не заменял эти изменения при запуске следующего сеанса, чтобы следовать совету Oren, о котором идет речь, gpu-manager перезаписывает xorg.conf, чтобы защитить файл от изменений посредством запуска

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

Мне кажется, что тот факт, что экран оставался черным после добавления двух файлов, упомянутых в вопросе, в /etc/X11/xorg.conf.d, связан с тем, что с файлами в / usr / share / X11 / xorg.conf.d, что файл конфигурации содержит противоречивую информацию.

Учитывая комментарий GabrielaGarcia, который удивительным образом заявил, что то, что я спрашиваю, не может работать на ноутбуке, я чувствую необходимость предоставить доказательство того, что то, что я спросил, может работать, и что ответ, который я дал, действительно является средством заставить его работать,

Здесь вывод lspci, подтверждающий существование двух видеокарт

(base) m3088: (~) 505> lspci | egrep "VGA|NVIDIA"
00:02.0 VGA compatible controller: Intel Corporation Device 3e9b
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)

Здесь вывод ps aux фильтрация Xorg, Plasma и Anaconda Python, выполняющих сеанс тензорного потока. Это показывает, что все работают хорошо вместе, в то время как Plasma и Xorg не используют карту nVidia по желанию (см. Nvidia-smi ниже)

(base) m3088: (~) 511> ps aux  | egrep "Xorg|plasmashell|anaconda"
roebel   13139  0.9  5.1 17315584 819236 pts/1 Sl+  00:23   0:10 /data/anasynth/anaconda3/bin/python /data/anasynth/anaconda3/bin/ipython
roebel   16198  0.0  0.0  21540  1068 pts/5    S+   00:42   0:00 grep -E Xorg|plasmashell|anaconda
roebel   18886  1.5  1.3 628292 210572 tty2    Sl+  juil.14  24:22 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
roebel   19171  2.0  3.4 6576588 561212 ?      Sl   juil.14  33:16 /usr/bin/plasmashell

Здесь вывод nvidia-smi, доказывающий, что Xorg не использует nvidia, но сеанс тензорного потока в python anaconda подает на него иск.

(base) m3088: (~) 506> nvidia-smi
Tue Jul 16 00:34:51 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P8    N/A /  N/A |    123MiB /  4042MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     13139      C   /data/anasynth/anaconda3/bin/python          109MiB |
+-----------------------------------------------------------------------------+

Я готов предоставить скриншоты, чтобы показать, что все это происходит на ноутбуке.

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