如何在最新的 Kubuntu 19.10 中使用“prime-select ondemand”

如何在最新的 Kubuntu 19.10 中使用“prime-select ondemand”

我在用著

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”問題,但我並不真正理解它是如何工作的,儘管我已經通讀了NVIDIA 加速 Linux 顯示卡驅動程式自述檔案與安裝指南

當我選擇時,prime-select intel我可以專門使用我的英特爾片上顯示卡,而使用時,prime-select nvidia我將能夠專門使用 nvidia GPU,而在分別選擇時我必須重新啟動。當我選擇時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 GPU,例如在打電話時glxinfoglxgears我得到它不使用 nvidia GPU 的資訊。我也嘗試了上面 NVIDIA 自述文件中給出的內容,例如__NV_PRIME_RENDER_OFFLOAD=1 glxgears,但我無法證明使用了 nvidia GPU。我擔心這個prime-select on-demand選項並沒有真正起作用,或者 - 這絕對是一個選項 - 我真的不明白它是如何工作的。

因此,請有人能好心地幫助我並揭開這個謎團嗎?

答案1

這是一個令人困惑的新“選項”,未對其進行描述,並且通常對大多數用戶沒有用處。導致添加此內容的錯誤報告指出 -

“根據當前的 NV 和英特爾 GPU 驅動程序,如果我們僅加載 nvidia.ko,我們就可以在英特爾 GPU 上進行顯示,並將 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 的補丁這裡 您可以閱讀所有資訊這裡

首先,您需要刪除英特爾驅動程式才能使用基於軟體的渲染(模式設定又稱為 llvmpipe 渲染器)。從此安裝最新的驅動程式聚苯胺最後,編譯/安裝修補過的 xorg。

目前最簡單的解決方案是升級到 ubuntu 20.04 並安裝 nvidia 驅動程式

sudo ubuntu-drivers install

我在 xorg.conf.d 中明確配置了 iGPU 和 dGPU 設備(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

...重新啟動並開始工作:

$ 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。

相關內容