Как использовать «prime-select on-demand» в последней версии Kubuntu 19.10

Как использовать «prime-select on-demand» в последней версии Kubuntu 19.10

я использую

Kubuntu 19.10
Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
NVIDIA UNIX x86_64 Kernel Module  435.21

и с тех пор как Kubuntu отказался от bumblebee, я искал другую возможность использовать драйвер nvidia для каждого приложения. Таким образом, я пришел к проблеме "PRIME Render Offload", но я не совсем понимаю, как это работает, хотя я прочиталREADME и руководство по установке графического драйвера NVIDIA Accelerated Linux.

Когда я выбираю, prime-select intelя могу работать исключительно с помощью своей графики Intel на чипе, тогда как при использовании prime-select nvidiaя смогу использовать исключительно графический процессор NVIDIA, при этом мне придется перезагрузиться при выборе соответственно. Когда я выбираю prime-select on-demand, я могу вызвать nvidia-smi, и он отобразится как ...

    Wed Nov 13 15:35:06 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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 940MX       Off  | 00000000:02:00.0 Off |                  N/A |
| N/A   36C    P8    N/A /  N/A |      0MiB /  2004MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

но я не могу проверить, могу ли я действительно "использовать" графический процессор nvidia, например, при вызове glxinfoили glxgearsя получил информацию, что он не использует графический процессор nvidia. Я также пробовал то, что указано в файле NVIDIA Readme выше, например __NV_PRIME_RENDER_OFFLOAD=1 glxgears, но я не могу доказать, что графический процессор nvidia используется. Я боюсь, что эта prime-select on-demandопция на самом деле не работает, или - что определенно является опцией - я не совсем понимаю, как она работает.

Поэтому, пожалуйста, может ли кто-нибудь быть настолько любезным, чтобы помочь мне здесь и развеять мифы по этому поводу?

решение1

Это запутанная новая «опция», которая не описана и, как правило, бесполезна для большинства пользователей. Отчет об ошибке, который привел к добавлению этой опции, гласил:

«Согласно текущему драйверу NV и графического процессора Intel, если мы загрузим только nvidia.ko, мы сможем выполнять отображение на графическом процессоре Intel и предоставить NV глубокому обучению для графической рабочей станции».

Сообщить здесь -https://bugs.launchpad.net/ubuntu/+source/nvidia-prime/+bug/1824282

Сообщение об ошибке о том, как плохо это было реализовано здесь -

https://bugs.launchpad.net/ubuntu/+source/nvidia-settings/+bug/1851416

решение2

В Ubuntu 19.10 xorg нужны некоторые патчи, которые доступны только для 18.04 и 19.04здесь Вы можете прочитать всю информациюздесь

Сначала вам нужно удалить драйверы Intel, чтобы использовать программный рендеринг (modeseting, он же llvmpipe renderer). Установите последние драйверы отсюдаппаи наконец, скомпилируйте/установите пропатченный xorg.

Самое простое решение на сегодняшний день — обновиться до Ubuntu 20.04 и установить драйверы NVIDIA.

sudo ubuntu-drivers install

Я явно настраиваю устройства iGPU и dGPU в xorg.conf.d (BusID может быть другим в других системах):

$ sudo cat /etc/X11/xorg.conf.d/20-intel.conf 
    Section "Device"
      Identifier  "Intel Graphics"
      Driver      "intel"
      Option      "AccelMethod"    "sna"
    EndSection 

$ sudo cat /etc/X11/xorg.conf.d/90-nvidia.conf 
    Section "ServerLayout"
      Identifier "layout"
      Screen 0 "iGPU"
      Option "AllowNVIDIAGPUScreens"
    EndSection
    
    Section "Device"
      Identifier "iGPU"
      Driver "modesetting"
      BusID          "PCI:0:2:0"  
    EndSection
    
    Section "Screen"
      Identifier "iGPU"
      Device "iGPU"
    EndSection
    
    Section "Device"
      Identifier "dGPU"
      Driver "nvidia"
      BusID          "PCI:3:0:0"  
    EndSection

... перезагрузите и заставьте Prime работать:

$ offload-glx glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce 940M/PCIe/SSE2

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa Intel(R) HD Graphics 5500 (BDW GT2)

offload_glx происходит от mate-prime-select и является псевдонимом этого: __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears

Поэтому установите драйверы nvidia и настройте xorg.

Связанный контент