如何强制 Linux 从两个可用的 GPU 中使用特定的视频卡?

如何强制 Linux 从两个可用的 GPU 中使用特定的视频卡?

系统和硬件:MB:MSI Z170A PC MATE;Intel i7-6700 3.4GHz;Nvidia GTX 750 Ti;Nvidia GTX 960;2 PCIe 3.0 x16(第 1 个插槽)和 x4(第 2 个插槽);Noveau 驱动程序

目标:使第二个 PCIe 插槽及其所含卡成为系统默认显卡,第一个 PCIe 插槽中的卡由 pci-stub 声明

迄今已尝试:

  • BIOS 仅允许在 Intel IG (iGPU) 和“外部”GPU (eGPU) 之间进行选择。
  • 如果卡位于第一个或第二个插槽中,并且 BIOS 切换到 eGPU,它将完美地识别它并使用 Noveau 运行它。
  • 如果我添加第二张卡,系统将始终选择 PCIe x16 插槽(第 1 个插槽)中的卡。
  • 如果我通过内核命令行声明带有 pci-stub 的第一张 PCIe x16 卡,并将第二张卡连接到 PCIe x4 插槽,那么连接到第二张卡的屏幕将保持不活动状态,而连接到第一张卡的屏幕将运行但保持黑色而没有任何输出。
  • 相反,第二张卡被存根认领,一切正常

有没有办法强制系统默认选择第二个 PCIe x4 插槽?例如,在 Xorg.conf 文件中明确描述第二张卡会有帮助吗?或者有没有办法告诉内核使用特定的卡进行视频输出?还是我的主板运气不好?

答案1

查看 xrandr 的手册——man xrandr。

xrandr --listproviders

应该会列出您的所有显卡。笔记本电脑通常使用两个 GPU,独立显卡(Nvidia)用于大部分工作,英特尔显卡用于屏幕写入。在提供程序列表中,Nvidia 将被命名为“NVIDIA-G0”,应该是源输出,英特尔将被命名为“modesetting”,应该是接收器输出。使用 xrandr --setprovideroutputsource 和 --setprovideroffloadsink 选项更改它们。

其他环境变量可能允许控制源/接收器,例如:

 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia  

我注意到有时 Ubuntu 22.04 上的 CUDA 示例无法运行,因为源/接收器被反转了,并且需要在可执行文件之前设置上述环境变量。

相关内容