특정 GPU에서 그래픽을 강제로 실행

특정 GPU에서 그래픽을 강제로 실행

내 컴퓨터에는 통합 그래픽 카드 1개와 Nvidia RTX 3070 GPU 2개가 있습니다. 저는 우분투 20.04와 nvidia-driver-530.

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation AlderLake-S GT1 (rev 0c)
01:00.0 VGA compatible controller: NVIDIA Corporation GA104 [GeForce RTX 3070 Lite Hash Rate] (rev a1)
05:00.0 VGA compatible controller: NVIDIA Corporation GA104 [GeForce RTX 3070 Lite Hash Rate] (rev a1)

현재 Phoronix 테스트 스위트를 사용하여 3070 그래픽 카드를 테스트하려고 합니다.

테스트를 위해 Intel iGPU에서 터미널을 사용 nvidia-prime하고 Nvidia 3070에서 phoronix를 실행하고 있습니다 .prime-select: on-demandprime-run phoronix-test-suite run unigine-heaven

시작하는 데 몇 가지 문제가 있었기 nvidia-prime때문에 이 기사의 조언을 따랐습니다.https://askubuntu.com/questions/1364762/prime-run-command-not-found

cat /usr/bin/prime-run
#!/bin/bash
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
exec "$@"

.prime-run01:00.0PCI:1:0:0

05:00.0그러나 버스 ID가 / 인 GPU 1을 사용하여 테스트를 실행할 수 없는 것 같습니다 PCI:5:0:0.

/etc/X11/xorg.conf아래 링크에 제안된 대로 버스 번호를 변경하고 재부팅하여 수정해도 아무 일도 일어나지 않는 것 같으며 여전히 GPU 0에서 실행되고 있습니다.

cat /etc/X11/xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 530.41.03

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
#    BusID          "PCI:1:0:0"
    BusID          "PCI:5:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

실제로 etc/X11/xorg.conf구성 파일 없이 GPU 0에서 phoronix 테스트를 제거하고 실행할 수 있었습니다. 제가 실행한 드라이버나 프로그램 중 하나가 버스 ID가 가장 낮은 NVIDIA 카드를 자동으로 선택한 것 같습니다.

버스 ID가 있는 두 번째 RTX 3070 GPU를 선택하려면 설정이나 구성 파일을 어디에서 변경해야 하는지 알고 싶습니다 05:00.0. 추가 정보를 기꺼이 제공해 드리겠습니다.

답변1

prime-run스크립트 에서 변수도 설정해야 합니다.

__NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G{CARD#}

에 있는 카드 식별자를 사용하세요 xrandr --listproviders.

아래 나열된 공식 Nvidia 가이드는 이 문제에 대한 해결책을 제공하지만, 나는 가이드를 주의 깊게 읽지 않았고 처음 읽을 때 놓쳤습니다.

https://download.nvidia.com/XFree86/Linux-x86_64/495.44/README/primerenderoffload.html

/etc/X11/xorg.conf이 솔루션에는 필요하지 않습니다.

OFFLOAD_PROVIDERXsession이나 그래픽이 표시되지 않고 클라이언트에서 원격으로 헤드리스 서버에 액세스하고 있기 때문에 관련 부분을 놓쳤습니다 .

머신은 헤드리스 터미널 환경뿐만 아니라 특정 유형의 GUI를 실행해야 합니다. 제 경우에는 lightdm서버에 설치했는데 모든 것이 잘 작동했습니다.

x11나는 그래픽이 / xorg대신에 사용되어야 한다고 생각합니다 wayland. 의 경우 gdm3주석 xorg처리를 제거하여 실행을 설정할 수 있습니다.

#WaylandEnable=false

그리고 /etc/gdm3/custom.conf다시 시작하세요.

관련 정보