Vulkan 애플리케이션이 Nvidia 독점 GPU를 사용하지 않도록 강제하는 방법은 무엇입니까?

Vulkan 애플리케이션이 Nvidia 독점 GPU를 사용하지 않도록 강제하는 방법은 무엇입니까?

GPU 2개가 장착된 노트북이 있습니다. 하나는 AMD 통합 GPU이고 다른 하나는 헤드리스 Nvidia 칩입니다. ~에 따르면엔비디아 문서, 환경 변수를 설정하면 __NV_PRIME_RENDER_OFFLOAD=1Nvidia GPU가 애플리케이션에 먼저 표시되고, __VK_LAYER_NV_optimus=NVIDIA_only다른 GPU가 숨겨지며, 애플리케이션이 Nvidia GPU를 사용하도록 강제되고, __VK_LAYER_NV_optimus=non_NVIDIA_onlyNvidia 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

이는 현재 Debian 테스트에 포함된 Nvidia 드라이버 버전 515.86.01입니다.

통합 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)

관련 정보