我有一台带有两个 GPU 的笔记本电脑,一个是 AMD 集成 GPU,另一个是无头 Nvidia 芯片。根据Nvidia 文档,设置环境变量__NV_PRIME_RENDER_OFFLOAD=1
将导致 Nvidia GPU 首先出现在应用程序中,__VK_LAYER_NV_optimus=NVIDIA_only
将隐藏其他 GPU,强制应用程序使用 Nvidia GPU,并将__VK_LAYER_NV_optimus=non_NVIDIA_only
隐藏 Nvidia GPU。前一个选项工作正常,但后一个选项仅调整顺序,而不是隐藏任何内容:
$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=non_NVIDIA_only vulkaninfo --summary | grep deviceName
deviceName = AMD Radeon Graphics (RADV RENOIR)
deviceName = NVIDIA GeForce RTX 3050 Ti Laptop GPU
deviceName = llvmpipe (LLVM 15.0.6, 256 bits)
$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only vulkaninfo --summary | grep deviceName
deviceName = NVIDIA GeForce RTX 3050 Ti Laptop GPU
deviceName = AMD Radeon Graphics (RADV RENOIR)
deviceName = llvmpipe (LLVM 15.0.6, 256 bits)
事实上,使用后一个选项集,许多应用程序仍然默认使用(更高性能)Nvidia GPU:
$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=non_NVIDIA_only vkcube
Selected GPU 1: NVIDIA GeForce RTX 3050 Ti Laptop GPU, type: DiscreteGpu
这是 Nvidia 驱动程序版本 515.86.01,目前在 Debian 测试中附带该版本。
如何让应用程序只看到集成 GPU?
答案1
我想到了。 VK_ICD_FILENAMES 环境变量允许您指定特定的 Vulkan 驱动程序。前任。
$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json vulkaninfo --summary | grep deviceName
deviceName = AMD Radeon Graphics (RADV RENOIR)