Linux dGPU Nvidia 独显运行应用
在 Ubuntu 22.04 上
系统带有工具 switcherooctl 可以切换系统使用的 gpu 卡,若默认连接显示到集成显卡,使用此工具时,将使用独显运行应用
若无法运行,可以使用 vkcube 来检查 Vulcan 的可用性,工具来自于包 vulkan-tools 直接 apt 安装即可。
可能出现无法调用情况如下:
vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extension. Do you have a compatible Vulkan installable client driver (ICD) installed? Please look at the Getting Started guide for additional information.
此时需要检查 icd 文件是否可用
ls /usr/share/vulkan/icd.d/nvidia_icd.json
若无文件,则需要安装库
sudo apt install vulkan-tools libvulkan1 libvulkan1:i386
若安装后仍不可用,检查是否有 Nvidia-wrapper
$ ls /usr/share/vulkan/icd.d/
intel_hasvk_icd.i686.json intel_icd.x86_64.json nvidia_icd.disabled_by_nv_vulkan_wrapper radeon_icd.x86_64.json intel_hasvk_icd.x86_64.json lvp_icd.i686.json nv_vulkan_wrapper.json virtio_icd.i686.json intel_icd.i686.json lvp_icd.x86_64.json radeon_icd.i686.json virtio_icd.x86_64.json
恢复配置:
sudo mv /usr/share/vulkan/icd.d/nvidia_icd.disabled_by_nv_vulkan_wrapper /usr/share/vulkan/icd.d/nvidia_icd.json
此时再切换独显运行可行。
注意,我并未发现哪部分程序给出了 nv_vulkan_wrapper,若可行,从添加 wrapper 的程序关闭可能更合理
使用环境变量运行 windows 软件
在解决 icd 问题后,环境变量也可以用作切换运行的方式,毕竟 switcherooctl launch 的原理本质也是切换环境变量。
例如使用 Steam 的 Proton 9.0-4 运行 Windows 应用,独显启动:
先要确保手动在 Steam 中添加可执行文件到游戏库中,并在命令行启动的 Steam 上获取其编号,或者在集显运行时查看其环境变量中的 SteamGameId
之后,为应用添加必要的环境变量,无需启动 Steam 即可运行应用本体
注意,最好替换 SteamGameId ,这是 Steam 做运行环境隔离的措施,使用程序自己的环境运行更稳定
此外,一定要替换 proton 的运行路径,我的路径只是 Proton 9.0 配置,随着版本更新,指令会有所不同。
此指令从 ps -aux | grep proton 获取,对于后续 Steam 启动 proton 的指令,可以通过如上方案获取启动指令模版。
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json SteamGameId=2907931734 STEAM_COMPAT_DATA_PATH=$HOME/.local/share/Steam/steamapps/compatdata/$SteamGameId STEAM_COMPAT_CLIENT_INSTALL_PATH=~/.local/share/Steam/ python3 "$HOME/.local/share/Steam/steamapps/common/Proton 9.0 (Beta)/proton" waitforexitandrun "/media/zsig/生活日常/Games/Grand Theft Auto V/GTA5.exe"

浙公网安备 33010602011771号