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

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

我在用着

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,例如在调用时glxinfo,或者glxgears我得到的信息是它不使用 nvidia GPU。我还尝试了上面 NVIDIA Readme 中给出的内容,例如__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。

相关内容