如何为 xserver 配置 igpu,为 cuda 配置 nvidia gpu?

win*_*tou 20 nvidia intel-graphics cuda nvidia-prime xorg.conf

Ubuntu 16.04

的输出uname -a

Linux HOST 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

桌面级:

  • 处理器:英特尔
  • GPU:Nvidia 361.42

我想要的是:

  • 英特尔 GPU 将运行 xserver 和我的显示器,它连接到板载 DP
  • nvidia GPU 只能用于 CUDA 特定的计算等。
  • 完全控制 nvidia gpu(实时、统计、临时风扇速度......)

我的问题:

  • 既不工作nvidia-smi也不nvidia-settings工作,我无法控制我的 nvidia GPU(错误被进一步引用)

我的故事:

在对我的问题进行简短总结之后,我想深入探讨这个话题;自 Ubuntu 16.04 发布以来,我正在修补并未能实现以下目标:

  • 我想要我的英特尔 GPU (i7 6700K) 来驱动我的 Xserver 和与之相关的所有东西。
  • 我希望我的专用 nvidia GPU 仅用于基于 Cuda 的计算等。
  • 在我解决问题后,我将向系统添加多个 nvidia GPU。

我的初始状态的简短摘要:

我通过 apt-get 安装了 nvidia 和 intel(intel-microcode 和 nvidia-361.42)的专有驱动程序,并通过 mokutul --disable-validation 禁用了安全启动。
然后我将 nvidia-prime 设置为使用英特尔卡。
然后我编辑了我的 xorg.conf 以只包含一个带有英特尔 GPU 和英特尔驱动程序的屏幕。(如果需要,请询问详细信息)
使用 Blender 测试 GPU 以进行渲染,一切似乎都很好,只是我无法获得我的 gpu 的任何统计信息,并且 nvidia 设置显示为空。

错误:

sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我通过自发布以来的所有尝试和研究学到了什么(简短版本,请随时询问详细信息):

我的两个问题相关但不一样:

Nvidia 设置为空:

  • 这是因为这些设置仅在 Xserver 连接到 nvidia GPU 时显示
  • 解决方案是在 xorg.conf 中添加一个新屏幕,强制和未使用的 xserver 在 nvidia GPU 上运行
  • 但这目前是不可能的(请参阅其他问题)并且不需要,因为我纯粹希望 nvidia GPU 专注于 Cuda

Nvidia-smi 不工作:

  • bbswitch 不是问题,因为我的 GPU (550ti) 不支持它(dmesg 中的错误)
  • nvidia prime 将 x86_64-linux-gnu_gl_conf 的条目更改为/usr/lib/nvidia-361/ld.so.conf(nvidia GPU selected) 或/usr/lib/nvidia-361-prime/ld.so.conf(intel GPU selected)
  • 英特尔选择的配置缺少基本的 nvidia 模块的基本路径,这些模块都存在于 nvidia 选择的 conf 中
  • 通过prime-select切换到nvidia时,我没有Xserver,因为显示器连接到集成GPU,但在虚拟控制台上登录nvidia-smi可以工作

我的假设:

  • Nvidia prime 很糟糕,不想要我想要的方式。
  • 我必须以某种方式克服prime并配置系统(甚至手动编写新配置?)

我的尝试:

  • 我尝试卸载 nvidia-prime,但后来我才意识到这是行不通的。当 x86_64-linux-gnu_gl_conf 的 conf 文件被删除时,结果是一团糟......
  • 我什至尝试手动将缺失的路径添加到 x86_64-linux-gnu_gl_conf 文件中,但我真的不知道我在做什么并且没有成功。

我的问题:

1) 如何解决 nvidia-smi 问题?我在正确的轨道上吗?有没有人有我如何继续的指示?

2) 是否可以在 gpu 上没有 Xserver 的情况下为 nvidia gpu(xorg.conf 中的coolbits)启用风扇控制和进一步控制(xorg.conf 中没有 gpu 的屏幕)?

非常感谢您的任何答复。我从字面上梳理了网络,梳子是我的问题。
如果我错过了任何重要的事情,请告诉我,不要犹豫,索取日志文件等。

谢谢

图像

我的附加驱动程序选项卡图像: 在此处输入图片说明

win*_*tou 5

我(这篇文章的作者)自己找到了我需要的解决方案!

我现在将向处于类似情况并需要此帮助的任何其他人解释解决方案!

解决方案:通过http://www.nvidia.com/object/unix.html
提供的运行文件安装 NVIDIA 驱动程序带有“--no-opengl-files”标志的运行文件!

这不仅可以防止 nvidia opengl 文件覆盖现有的 mesa 文件,而且还可以在没有 nvidia prime 的情况下安装驱动程序!!

所以我所有的问题都解决了,只需手动安装驱动程序,而不是从存储库安装它。存储库中的软件包是“Optimus-Friendly”的,因此捆绑了所有无用的麻烦制造者。

其次

xorg.conf 必须为专用 GPU 扩展另一个屏幕,以便它/他们在 nvidia-settings 中有/有条目。

我的看起来像这样

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection
Run Code Online (Sandbox Code Playgroud)


Mic*_*ele 0

我获得了你想要的配置(我也想要它;)):

  • 英特尔 GPU 应运行 xserver 和我的显示器,该显示器连接到板载 DP
  • nvidia GPU 只能用于 CUDA 特定计算等。
  • 完全控制 nvidia gpu(实时、统计数据、临时风扇速度...)

通过使用bumblebee

但在详细介绍之前,我应该警告您,当更改 nvidia-settings 或 xorg.conf 或 nvidia prime 的配置时,您必须重新启动系统(也许您已经知道)。不重新启动可能会使系统处于不一致的状态。


在我的配置中我没有碰过xorg.conf. 这样做对我来说一直是痛苦的根源。请保持原来的状态。如果您不想执行全新安装,可以在/etc/X11/( ls /etc/X11/xorg.conf*) 中找到一些备份。

第一步是努力nvidia-settings工作。如果您成功做到这一点,您可以使用 nvidia PRIME 切换到英特尔 GPU,正如您提到的那样。如果您只想使用 NVIDIA GPU 进行 CUDA 计算,则需要将 nvidia prime 指向 intel GPU(如果您想使用 cuda 调试器,则尤其需要cuda-gdb)。

之后你可以尝试安装bumblebee

sudo apt install bumblebee
Run Code Online (Sandbox Code Playgroud)

重启。您可以使用以下方式监视大黄蜂的状态

sudo service bumblebeed status
Run Code Online (Sandbox Code Playgroud)

或者

bumblebeed -vv
Run Code Online (Sandbox Code Playgroud)

bumblebee 的作用是激活 NVIDIA GPU,并仅在需要时尝试将 nvidia 驱动程序插入内核中。optirun您可以通过在要运行的命令之前添加 bumblebee 来使用。

为了使 bumblebee 工作,我必须手动编辑/etc/bumblebee/bumblebee.conf以正确设置 nvidia 驱动程序名称和路径。

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361
Run Code Online (Sandbox Code Playgroud)

然后,sudo service bumblebeed restart我成功激活了大黄蜂系统。

事实上nvidia-smi返回

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.
Run Code Online (Sandbox Code Playgroud)

optirun nvidia-smi

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| 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 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。