Meu computador possui uma placa gráfica integrada e 2 GPUs Nvidia RTX 3070. Estou usando o Ubuntu 20.04 e 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)
No momento, estou tentando testar minhas placas gráficas 3070 com o Phoronix Test Suite.
Estou usando nvidia-prime
e prime-select: on-demand
rodando o terminal nos testes intel iGPU e phoronix na Nvidia 3070: prime-run phoronix-test-suite run unigine-heaven
.
Houve alguns problemas para começar nvidia-prime
a trabalhar, então segui as sugestões deste artigo: 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 "$@"
Ao usar, prime-run
consigo executar com êxito o conjunto de testes phoronix na GPU 0, que possui id de barramento 01:00.0
/ PCI:1:0:0
.
No entanto, parece que não consigo executar nenhum teste com a GPU 1 que possui bus id 05:00.0
/ PCI:5:0:0
.
Modificar /etc/X11/xorg.conf
alterando o número do barramento e reiniciando conforme sugerido pelos links a seguir não pareceu fazer nada e ainda funcionou na GPU 0.
- https://stackoverflow.com/questions/18382271/how-can-i-modify-xorg-conf-file-to-force-x-server-to-run-on-a-specific-gpu-ia
- https://askubuntu.com/questions/787030/setting-the-default-gpu
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
Na verdade, apaguei etc/X11/xorg.conf
e consegui executar os testes do phoronix na GPU 0 sem o arquivo conf. Eu acho que um dos drivers ou programas que executo seleciona automaticamente a placa nvidia com o menor ID de barramento.
Gostaria de saber onde devo procurar para alterar as configurações ou quaisquer arquivos de configuração para selecionar a segunda gpu RTX 3070 com o bus id 05:00.0
. Eu ficaria mais do que feliz em fornecer qualquer informação adicional.
No
prime-run
script, também preciso definir a variável__NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G{CARD#}
usando o identificador de cartão encontrado em
xrandr --listproviders
.O guia oficial da Nvidia listado abaixo tem a solução para esse problema, mas não li o guia com atenção suficiente e perdi na minha primeira leitura.
https://download.nvidia.com/XFree86/Linux-x86_64/495.44/README/primerenderoffload.html
/etc/X11/xorg.conf
é desnecessário para esta solução.Perdi a parte sobre
OFFLOAD_PROVIDER
porque estava acessando o servidor sem cabeça remotamente de um cliente sem qualquer Xsession ou exibição gráfica.A máquina deve estar executando algum tipo de GUI e não apenas um ambiente de terminal sem periféricos. No meu caso, instalei
lightdm
no meu servidor e tudo funcionou.Acredito que os gráficos precisam estar usando
x11
/xorg
e nãowayland
. Paragdm3
,xorg
pode ser definido para ser executado descomentando#WaylandEnable=false
dentro
/etc/gdm3/custom.conf
e reiniciando.