我有一台运行 Ubuntu 22.04 的笔记本电脑,里面有英特尔高清显卡和独立 nvidia(Quadro M2000M)卡,我正在尝试使用外部 GPU 设置(RTX 3060),但是我找不到如何配置我的系统以允许选择 eGPU 设置来启动应用程序:使用switcherooctl launch
或__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1
选择不同的卡将始终导致系统使用专用的 M2000M 而不是外部 RTX 3060。
我也尝试过使用 egpu-switcher 工具,但是任何在 /etc/X11/ 中创建 xorg.conf 文件的解决方案都会阻止操作系统加载 X,直到删除该 xorg.conf 文件。
lspci |grep VGA
正确检测卡
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GLM [Quadro M2000M] (rev a2)
0a:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] (rev a1)
nvidia-smi -l 1
也能正确显示卡片
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.73.05 Driver Version: 510.73.05 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Quadro M2000M Off | 00000000:01:00.0 Off | N/A |
| N/A 44C P8 N/A / N/A | 259MiB / 4096MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA GeForce ... Off | 00000000:0A:00.0 Off | N/A |
| 0% 44C P8 18W / 170W | 1MiB / 12288MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
与 switcherooctl 的结果类似
Device: 0
Name: Intel® HD Graphics 530
Default: yes
Environment: DRI_PRIME=pci-0000_00_02_0
Device: 1
Name: NVIDIA Corporation GM107GLM [Quadro M2000M]
Default: no
Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1
Device: 2
Name: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate]
Default: no
Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1
但是,例如运行switcherooctl launch -g 2 glxgears
将在专用 gpu 上运行命令,而不是在外部 gpu 上运行命令。
我还可以成功地使用外部卡作为搅拌机上的渲染设备,但无法用它运行任何其他应用程序。
有人找到了配置系统以便能够使用外部 GPU 来运行应用程序的方法吗?
答案1
我花了很长时间才找到解决方案,但实际上几乎不需要花费什么力气:
我必须修改 /usr/share/X11/xorg.conf.d/10-nvidia.conf 以添加
Option "AllowExternalGpus" "true"
这样它看起来就像这样:
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "AllowExternalGpus" "true"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection
重新启动后,该设备将出现在 nvidia x 服务器设置实用程序中,并且在xrandr --listproviders
:
Providers: number : 3
Provider 0: id: 0x42 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 1 associated providers: 2 name:modesetting
Provider 1: id: 0x41f cap: 0x2, Sink Output crtcs: 4 outputs: 7 associated providers: 1 name:NVIDIA-G1
Provider 2: id: 0x29d cap: 0x2, Sink Output crtcs: 4 outputs: 6 associated providers: 1 name:NVIDIA-G0
尽管 switcherooctl 仍然无法指定 gpu,但可以通过指定卸载提供程序手动执行此操作:
__NV_PRIME_RENDER_OFFLOAD=1 __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears
...其中 NVIDIA-G1 被您希望使用的 GPU 的名称替换。
希望这对未来的 egpu 信息清道夫有用。