我的电脑有一个集成显卡和 2 个 Nvidia RTX 3070 GPU。我正在使用 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 显卡。
我正在使用nvidia-prime
并prime-select: on-demand
在英特尔 iGPU 上运行终端,在 Nvidia 3070 上运行 phoronix 测试:prime-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-run
我成功地能够在具有总线 ID 01:00.0
/的 GPU 0 上运行 phoronix 测试套件PCI:1:0:0
。
但是,我似乎无法使用具有总线 ID 05:00.0
/的 GPU 1 运行任何测试PCI:5:0:0
。
通过更改/etc/X11/xorg.conf
总线编号进行修改并按照以下链接的建议重新启动似乎没有做任何事情并且仍然在 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
事实上,我删除etc/X11/xorg.conf
并能够在 GPU 0 上运行 phoronix 测试,根本没有 conf 文件。我猜想我运行的其中一个驱动程序或程序会自动选择具有最低总线 ID 的 nvidia 卡。
我想知道我应该在哪里更改设置或任何配置文件,以便选择第二个具有总线 id 的 RTX 3070 gpu 05:00.0
。我很乐意提供任何进一步的信息。
在
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_PROVIDER
因为我在没有任何 Xsession 或图形显示的情况下从客户端远程访问无头服务器。机器必须运行某种类型的 GUI 而不仅仅是无头终端环境。就我而言,我安装
lightdm
到我的服务器上,然后一切正常。我相信图形需要使用
x11
/xorg
而不是wayland
。对于gdm3
,xorg
可以通过取消注释设置运行#WaylandEnable=false
并
/etc/gdm3/custom.conf
重新启动。