所以,bumblebee 似乎已经死了,被抛弃了。该仓库最后一次认真的活动是在 2013 年。显然,当前的“好”解决方案是唯一的描述在这里:每次我想使用 Nvidia GPU 时,我都必须至少注销并重新登录(显然,用于在 Intel 和 Nvidia 之间进行选择的 Nvidia 工具会更改 initramfs,所以我认为我必须重新启动),现在我的笔记本电脑耗电量是原来的两倍(我可以感觉到通风口的热量大大增加),我必须重新配置显示器设置,并且我不能再使用 Intel GPU(我可以在 Vulkan 设备中看到它,但尝试使用它时会出现错误)。这就是 Linux 笔记本电脑上 Nvidia 的“最新技术”吗?
我不能同时使用两种 GPU,让英特尔大部分时间都在工作,然后决定根据每个应用程序使用 Nvidia(或者同时使用两种 GPU,就像我通过 Vulkan 使用 AMD+英特尔一样)吗?我的设备是 ThinkPad T480。
答案1
正如我在评论中提到的那样,我找到了有关如何执行所谓的“PRIME 渲染卸载“。基本上,它会创建一个连接到低功耗 GPU(在我的情况下是英特尔,但它似乎也可以与集成的 AMD 配合使用)的 X 屏幕,并且在特定应用程序上,您将工作“卸载”到专用 GPU,这也必须由 X 服务器加载。
火力
它与 Vulkan 透明协作,两种设备均列出并可供应用程序使用。与上面链接的文档相反,设置环境变量__NV_PRIME_RENDER_OFFLOAD=1
对 Vulkan 没有任何影响,NVIDIA 设备始终可用。这是在 Nvidia 上运行的一个 vkcube 和在 Intel 上运行的另一个 vkcube 的屏幕截图:
OpenGL
要将 Nvidia GPU 与 OpenGL 应用程序一起使用,您必须设置环境变量__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
,否则将默认使用集成 GPU。以下是两个glxgear
在不同 GPU 上同时运行的屏幕截图:
如何在 Ubuntu 中设置
我只是按照这一页,最终运行命令:
sudo ubuntu-drivers install nvidia:525
我还尝试按照手册页中的说明设置自动细粒度电源管理“PCI-Express 运行时 D3 (RTD3) 电源管理“,但我的 GPU 太旧了,不支持它。我不知道它是否对我的系统有任何影响,但是当我运行时nvidia-settings
,PRIME 配置文件“Intel(省电模式)”变灰并且不可用。我不知道为什么,它前一天还在工作,它可能与在失败的设置中弄乱内核驱动程序参数有关。
为了使 PRIME 渲染卸载正常工作(而不是简单地在独立 GPU 上运行所有内容),我选择了 PRIME 配置文件 NVIDIA On-Demand:
然后,如果您的驱动程序版本足够新,Xorg 足够新,您的 BIOS 恰好在集成 GPU 上启动,并且一切顺利,X 将自动加载两个 GPU 并使用集成 GPU 创建屏幕,而无需处理/etc/X11/xorg.conf
。您可以通过运行 来查看是否发生了这种情况xrandr --listproviders
。它应该有两行,大致如下:
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x46 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 5 associated providers: 0 name:modesetting
Provider 1: id: 0x20e cap: 0x0 crtcs: 0 outputs: 0 associated providers: 0 name:NVIDIA-G0
就是这样。我不知道我是否做了其他事情来启用渲染卸载,或者它是否在我第一次决定安装 NVIDIA 驱动程序时就已经在工作了,而且我不知道,因为不知何故我错过了 Vulkan 设备中列出的 NVIDIA GPU(或者可能是在我第一次将 PRIME 配置文件更改为“NVIDIA(性能模式)”时创建的 ICD json 文件,谁知道呢?),再加上我在谷歌上搜索“NVIDIA On-Demand”配置文件时得到的错误信息,它说这是一个屏幕外的 CUDA 东西,并没有提到在 OpenGL 应用程序上选择 GPU 的环境变量。