NVIDIA On-Demand:在 dGPU 上运行特定应用程序

NVIDIA On-Demand:在 dGPU 上运行特定应用程序

我在 NVIDIA X 服务器设置中启用了新的“NVIDIA On-Demand”选项。现在所有东西都默认使用 iGPU,这应该会更有利于电池寿命(至少,这是我所希望的)。

我希望一些应用程序(例如 Blender)默认使用 dGPU。

根据文档

要将图形应用程序配置为卸载到 NVIDIA GPU 屏幕,请将环境变量设置__NV_PRIME_RENDER_OFFLOAD1。如果图形应用程序使用 Vulkan 或 EGL,那么这应该是所需的全部。如果图形应用程序使用 GLX,则还要将环境变量设置__GLX_VENDOR_LIBRARY_NAMEnvidia,以便 GLVND 加载 NVIDIA GLX 驱动程序。

因此我只是创建了一个 shell 脚本来作为 Blender 可执行文件的代理:

〜/ .local / bin / blender

#!/usr/bin/env bash
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
blender="$HOME/opt/blender-2.82a-linux64/blender"
exec -a "$0" "$blender" "$@"

这虽然有效,但它不是一个特别干净的解决方案。

NVIDIA 设置有一个“应用程序配置文件”部分,您可以在其中添加特定于应用程序的配置文件。
应用程序配置文件文档
有各种与 OpenGL 相关的选项,但是我找不到任何设置来选择使用哪个 GPU。使用应用程序配置文件是否无法实现?有没有比环境变量更简洁的替代方案?

答案1

对我有用的是在我想默认使用 dgpu 的应用程序的 .desktop 文件中添加这些行。

PrefersNonDefaultGPU=true
X-KDE-RunOnDiscreteGpu=true

它还将使用专用显卡启动选项替换为使用集成显卡启动选项。这在 ubuntu 22.04 上有效,我不确定向后兼容性,但我相信它也应该在 impish、focal 和 bionic 上有效。

相关内容