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

Geo*_*rge 8 nvidia graphics nvidia-optimus bumblebee drivers

我正在使用

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

并且由于 Kubuntu 已经放弃了大黄蜂,我正在寻找另一种可能性来为每个应用程序使用 nvidia 驱动程序。因此,我遇到了“PRIME Render Offload”问题,但我并不真正了解它是如何工作的,即使我已经阅读了NVIDIA Accelerated Linux Graphics Driver README 和 Installation Guide

当我选择时,prime-select intel我可以只使用我的 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                                                 |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

但是,我无法验证,如果我真的可以“使用”nvidia GPU,例如在调用时glxinfo或者glxgears我得到它不使用 nvidia GPU 的信息。我还尝试了上面 NVIDIA 自述文件中给出的内容,例如__NV_PRIME_RENDER_OFFLOAD=1 glxgears,但我无法证明使用了 nvidia GPU。我担心该prime-select on-demand选项并没有真正起作用,或者 - 绝对是一个选项 - 我真的不明白它是如何工作的。

因此,拜托,有人能在这里帮助我并揭开它的神秘面纱吗?

dou*_*oug 6

这是一个令人困惑的新“选项”,没有描述,通常对大多数用户没有用。导致此被添加的错误报告指出 -

“根据当前的 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


Cel*_*Asm 5

在 ubuntu 19.10 中,xorg 需要一些仅适用于 18.04 和 19.04 的补丁在这里 您可以在这里阅读所有信息

首先,您需要删除英特尔驱动程序以使用基于软件的渲染(模式设置又名 llvmpipe 渲染器)。从此ppa安装最新的驱动程序,最后编译/安装修补过的 xorg。

今天最简单的解决方案是升级到 ubuntu 20.04 并安装 nvidia 驱动程序

sudo ubuntu-drivers install
Run Code Online (Sandbox Code Playgroud)

我在 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
Run Code Online (Sandbox Code Playgroud)

...重新启动并开始工作:

$ 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)
Run Code Online (Sandbox Code Playgroud)

offload_glx 来自 mate-prime-select 并且是它的别名:__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears

所以安装nvidia驱动,并配置xorg。