特定のGPUでグラフィックを強制的に実行する

特定のGPUでグラフィックを強制的に実行する

マイコンピュータには、統合グラフィックカード1枚とNvidia RTX 3070 GPU 2枚があります。私はUbuntu 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-primeNvidia 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テストを削除して実行できました。私が実行したドライバまたはプログラムの1つは、バスIDが最も低いNVIDIAカードを自動的に選択したようです。

バスIDを持つ2番目の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再起動してください。

関連情報