如何在 16.04 上使用专有驱动程序在 Nvidia 卡上启动单个应用程序

dad*_*x86 5 nvidia nvidia-optimus bumblebee drivers nvidia-prime

最开始在 Ubuntu 上支持 Optimus 技术时,有 Bumblebee,它可以在专用的 Nvidia 卡上启动单个应用程序,而将系统的其余部分留在集成的英特尔上。

Bumblebee 一直是一个临时项目,原则上已经被 Prime 的全力支持取代(上次发布是在 2013 年,所以现在这个项目已经死了)。

现在我可以从 Nvidia 设置应用程序更改卡,注销和登录,整个系统使用我的专用卡。

这是我想避免的。我在笔记本电脑上工作,做事,而不是想玩一些游戏或编辑一些照片。注销然后再次登录需要一些时间,然后当我完成时我必须恢复,如果我忘记了一切在几个小时后开始升温......

因此,问题是如何使用专有的 Nvidia 驱动程序 (340) 在 16.04 上获得与 bumblebee(在专用 GPU 上启动单个应用程序)相同的结果?

更详细地说,这是我的 lspci

$ lspci -nn | grep '\[03'
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
02:00.0 3D controller [0302]: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] [10de:1140] (rev ff)
Run Code Online (Sandbox Code Playgroud)

我想在 Nvidia 卡上使用 Darktable 和 Steam 游戏。

Hi-*_*gel 0

NvidiaPRIME从 435.17 版本开始支持,但有一个细微差别,即简单设置DRI_PRIME=1不太有效。相反,您可以使用这个单行脚本作为\xc2\xb9:

\n
$ sudo wget https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-prime/-/raw/main/prime-run\\?ref_type\\=heads -O /usr/bin/prime-run\n[\xe2\x80\xa6]\n$ prime-run glxinfo | grep "OpenGL renderer"\nOpenGL renderer string: NVIDIA GeForce RTX 3050 Ti Laptop GPU/PCIe/SSE2\n
Run Code Online (Sandbox Code Playgroud)\n

值得一提的是,Ubuntu 也有一个nvidia-prime带有实用程序的软件包/sbin/prime-offload,但与单行程序相比,其内容相当复杂prime-run,因此我怀疑它可能正在为 NVidia 驱动程序没有 PRIME 支持的情况建立一些解决方法。一般来说,解决方法往往会出现问题,因此我不能推荐该实用程序。

\n
\n

1:对于后人来说,在写下这些话时,内容prime-run只是:

\n
#!/bin/bash\n__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"\n
Run Code Online (Sandbox Code Playgroud)\n