在 Ubuntu 最开始支持 Optimus 技术的时候,就有 Bumblebee,它可以在专用的 Nvidia 卡上启动单个应用程序,而将系统的其余部分留在集成的 Intel 上。
Bumblebee 一直是一个临时项目,并且原则上已被 Prime 的全力支持所取代(上次发布是在 2013 年,因此现在该项目已经失败)。
现在我可以从 Nvidia 设置应用程序更改卡,注销并登录,然后所有的系统使用我的专用卡。
这是我想避免的事情。我在用笔记本电脑工作、做事,然后我想玩一会儿游戏,或者编辑一些照片。注销然后再次登录需要一些时间,然后当我完成后我必须恢复,如果我忘记了,几个小时后一切都会开始变热……
所以,问题是我如何在 16.04 上使用专有 Nvidia 驱动程序(340)实现与 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)
我想在 Nvidia 卡上使用 Darktable 和 Steam 游戏。
答案1
NvidiaPRIME
自 435.17 版本起支持,但有一个细微差别,即简单地设置DRI_PRIME=1
不太适用。相反,你可以使用这个单行脚本为:
$ sudo wget https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-prime/-/raw/main/prime-run\?ref_type\=heads -O /usr/bin/prime-run
[…]
$ prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NVIDIA GeForce RTX 3050 Ti Laptop GPU/PCIe/SSE2
值得一提的是,Ubuntu 也有一个nvidia-prime
带有实用程序的软件包/sbin/prime-offload
,但与单行程序相比,其内容相当复杂prime-run
,因此我怀疑它可能正在为 NVidia 驱动程序不支持 PRIME 的情况建立一些解决方法。一般来说,解决方法往往会出现问题,因此我不推荐该实用程序。
1:对于后人而言,写下这些文字的内容prime-run
仅为:
#!/bin/bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"