NVLink 可以用来减少多显示器系统上跨 GPU 硬件加速内容合成的开销吗?

NVLink 可以用来减少多显示器系统上跨 GPU 硬件加速内容合成的开销吗?

我在 Windows 10 Pro for Workstations 系统中安装了两个 GPU,以支持五台 4K 显示器。目前,我使用 RTX 2080Ti 作为主卡,使用 GTX 1050Ti 作为副卡。

当应用程序内显示硬件加速内容(例如视频)时,它会在其中一个 GPU 上渲染;通常是 2080Ti,但系统/应用程序可以自由选择。如果将窗口内容移动到连接到另一个 GPU 的显示器,桌面窗口管理器 (DWM) 会合成内容。这涉及将渲染缓冲区从一张卡传输到另一张卡,中间可能还要交换到系统内存,这很慢而且效率低下。

可以在任务管理器中看到此开销:执行硬件加速的卡将显示 GPU 时间用于 3D 或视频解码,连接显示器的卡将显示 GPU 时间用于复制操作,dwm.exe 将显示高 CPU 和 GPU 使用率以及增加的 PF 增量。我已经确认这不是 1050Ti 功率不足的问题;当内容显示在连接到该卡的显示器上时,强制浏览器使用 1050Ti 进行硬件加速会产生完全可接受的性能,并且带有 madVR 的 MPC-HC(根据窗口所在的显示器交换目标 GPU)可以顺利地在该卡上播放高比特率 2160p60 媒体。

在某些情况下,如果我知道我将在特定显示器上使用其他 GPU,可以通过让应用程序选择其他 GPU 来解决此问题,但这很不方便,并且不适用于 Web 浏览器和其他多窗口程序。当窗口位于其他显示器之一时,合成性能影响足以阻止在 Chrome 和 Firefox 中可靠播放 1440p 或 2160p YouTube 视频。禁用硬件加速不是一个可接受的选择。

我了解 NVLink 可以在某些配置下启用 GPU 内存池和/或共享。但是,我最后一次使用链接 GPU 的经验是在 2000 年代后期使用 SLI,当时启用 SLI 时总共无法运行多台显示器,而且我不太了解 NVLink 如今的实际行为。

我知道 NVLink 可以在不同模式下运行(SLI 模式、TCC 模式),并且 GPU 的功能和行为会根据这些模式而有所不同。我理解 TCC 模式通常仅在专业 (Quadro) 卡之间受支持,并且在使用 TCC 模式时会禁用显示输出;这对于计算集群操作是有意义的。我读过有关 NVLink 和 SLI 模式的多显示器支持的相互矛盾的信息,我也不清楚“安装了 NVLink 桥的两个 GPU”和“在 NV-SLI 模式下安装了 NVLink 桥的两个 GPU”是否是不同的概念。

鉴于 NVLink 提供了一个接口,通过该接口两个 GPU 可以访问彼此的内存,我可以预见 Windows 可能会利用这一点(最有可能是在 DXGI 中)来显著减少窗口管理器中显示合成的开销。

基于上述情况,我的问题是:

  • 两个未安装 NVLink 桥接器的消费级 RTX GPU、两个安装了 NVLink 桥接器的消费级 RTX GPU 以及两个在“SLI”模式下安装了 NVLink 桥接器的消费级 RTX GPU 之间有什么实际区别(如果有的话)(这是 NV-SLI 吗?)
  • 在两个消费级 RTX GPU 之间安装 NVLink 桥接器(即非 TCC 模式)是否仍允许使用两张卡上的所有显示输出,还是禁用部分输出?如果 NVLink 桥接卡和“SLI 模式”事实上是不同的概念,显示输出可用性是否会根据 SLI 是否启用而改变?
  • 最重要的是,NVLink 是否有助于解决 Windows 10 中硬件加速窗口合成开销的问题?如果没有,那么在 Windows 11 中这种情况有变化吗?

相关内容