我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>应用>技术动态>技术应用

大屏同步问题,看这就够了

文章来源:arinchina 作者:Frank 发布时间:2019年07月04日 点击数: 字号:

提起大规模可视化,同步是个始终绕不过去的话题。一旦考虑不当,该死的画面撕裂准会找上门来,使整个项目无法验收。

 

更加糟糕的是很多项目负责人往往还对同步一知半解,这就越发埋下了深深的隐患。为此,谨以此文献给那些垂头丧气的项目负责人,希望能为烈日炎炎中的他们带来一丝清凉。

 

垂直同步信号的前世

 

显示器显示画面时,电子枪从上到下逐行扫描,扫描完成后显示器就呈现一帧画面。然后电子枪回到初始位置进行下一次扫描。为了同步显示器的显示过程和系统的视频控制器,显示器会用硬件时钟产生一系列的定时信号。当电子枪换行进行扫描时,显示器会发出一个水平同步信号,简称 HSync;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个垂直同步信号,简称 VSync。显示器通常以固定频率进行刷新,这个刷新率就是 VSync 信号产生的频率。

 

 

                            

CPU 计算好显示内容提交至 GPU,GPU 渲染完成后将渲染结果存入帧缓冲区,视频控制器会按照 VSync 信号逐帧读取帧缓冲区的数据,经过数据转换后最终由显示器进行显示。

 

 

 

最简单的情况下,帧缓冲区只有一个。此时,帧缓冲区的读取和刷新都都会有比较大的效率问题。为了解决效率问题,GPU 通常会引入两个缓冲区,即 双缓冲机制。双缓存机制即前后缓存。前缓存就是屏幕上最终看到的像素,而后缓存是绘制使用,后缓存绘制好一帧,通常就交换一次,写给前缓存,而显示器则从前缓存不断的读取数据。

 

 

图中f1,也称为交换帧率,f1决定了显卡一秒能绘制多少次。 显示器读取前缓存也存在一个频率,即f2,f2为刷新率,即显卡按照多少的频率把前缓存的数据给显示器绘制一次。可见用户最终看到的帧率是f1 和 f2的共同结果。实际的帧率f应该是在1秒内有多少个后缓存传递到了显示器。这样看f=min(f1,f2),即受这两个帧率的制约了。

 

 

 

前缓存处于被后缓存写而被显示器读的状态,那么这过程就极有可能发生读写冲突。当视频控制器还未读取完成时,即屏幕内容刚显示一半时,GPU 将新的一帧内容提交到帧缓冲区并把两个缓冲区进行交换后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂现象。它是由于交换帧率与刷新率不同步造成的。

 

 

 

 

为了解决这个问题,GPU 通常有一个机制叫做垂直同步(也简写 V-Sync),当开启垂直同步后,GPU 会等待显示器的 VSync 信号发出后,才进行新的一帧渲染和缓冲区更新。这相当于将应用程序交换缓冲区同步到垂直同步信号,这样可解决画面撕裂现象。

 

垂直同步信号的今生

 

在大屏项目中,单显卡多显示输出,多显卡多显示输出,甚至多台机器多个显示输出的应用环境非常普遍。在这种情况下,如何保证多个显示输出的内容同步就显得尤为重要。

 

⑴   单显卡单显示输出

 

只需开启GPU的垂直同步机制,将应用程序交换缓冲区同步到垂直同步信号即可。

 

⑵   单显卡多显示输出

 

显卡所有输出接口会多路复用一个时钟信号,这时多个输出设备刷新率一样,发出垂直同步信号的时间也一致。

 

⑶   多显卡多显示输出

 

如下图所示:多块显卡输出多个显示画面,这时每块显卡都有自己的时钟频率。这就会存在虽然所有输出设备可能具有相同的刷新率,但发出垂直同步信号的时间不尽相同,从而导致整个系统不同步。

 

 

 

为此,需要在不同图形卡之间提供公共同步信号,以确保所有显示设备同时发出垂直同步信号。这个公共同步信号可由Framelock或Genlock来提供。

 

 

 

新一代NVIDIA Quadro多卡之间的公共同步信号由Quadro SYNCⅡ提供。

 

 

(英伟达QuadroSYNC Ⅱ同步卡)

 

(多显卡同步效果图)

 

 

同步卡可确保所有显示设备同时发出垂直同步信号,然而要让画面流畅显示,还需要将应用程序交换缓冲区同步到垂直同步信号才行。

 

如下图所示:每个显示设备对应的节点现在都在渲染一个具有不同复杂度的场景,不同节点渲染各自场景所需的时间各不相同。

 

 

 

当每个节点以不同的速率运行时,用户就会感觉到在屏幕上出现撕裂。我们需要一种机制来确保每个节点同时交换。Swap Group在单个主机中提供同步多个GPUS。使用Swap Group,每个节点将等待,直到所有节点都完成了渲染后,才将应用程序交换缓冲区同步到共同的垂直同步信号,这样避免了画面撕裂。

 

 

 

另外,英伟达已经对Swap Group进行了封装。用户利用它时,只需在应用程序写入一段调用SwapGroup API的代码即可。并且NVIDIA还给出了具体的调用方法,如下图所示:

 

 

 

⑷   多机器显示输出

 

Swap Barrier提供跨多台主机间的GPUS同步。使用Swap Barrier,每个主机将等待,直到所有主机都完成了渲染后,才将应用程序交换缓冲区同步到共同的垂直同步信号,这样避免了画面撕裂。当然应用程序调用Swap Barrier的方法跟调用Swap Group一样。

 

  

(机器之间的同步连接示意图)

 

大屏项目同步卡的选择

 

在大屏项目中,同步卡的选择也非常重要。可惜,很多项目经理对其也知之甚少。今天笔者就把这个问题也给大家彻底讲透。

 

现阶段显卡实现同步有三种方式,它们分别是2-WAY,NVLINK,QUADROSYNC ‖。

 

 

 

下面就让小编娓娓道来吧。

 

⑴   2-WAY SLI同步方式。

 

首先、2-WAY SLI同步方式要求工作站或主板必须通过SLI认证才行。如,Dell/HP/Lenovo等OEM高端工作站就通过了SLI认证。

 

其次、2-WAY SLI同步方式只支持两块显卡之间的同步。

 

最后、只需一个SLI桥接器接口。

 

另外,目前支持SLI的主流NVIDIA显卡只有P4000、P5000、P6000。

 

⑵   NVLINK同步方式

首先、NVLINK同步方式对机器没具体要求,只需其可安装上两块支持NVLINK的显卡即可。

 

其次、NVLINK同步方式也只支持两块显卡之间的同步。

 

最后,需要采购NVLINK桥接器。

 

另外,目前支持NVLINK同步放的专业显卡有GV100、GP100、RTX5000、RTX6000、RTX8000

 

⑶   QUADRO SYNC ‖同步方式

 

首先、QUADRO SYNC ‖同步方式也对机器没有具体要求。只需能安装下几块显卡即可。

 

其次、一块QUADRO SYNC ‖最多可支持4块显卡之间的同步

 

最后、需要采购QUADROSYNC ‖同步卡。

 

另外,目前支持QUADRO SYNC ‖同步卡的专业显卡有P4000、P5000、P6000、GV100、GP100、RTX4000、RTX5000、RTX6000、RTX8000

 

这下您应该彻底明白了吧。在选择同步卡时,您可根据项目的实际情况在上面的三种同步方式中任选一种即可。

 

 

好了,大屏同步问题今天就介绍到这儿吧。以后凡是碰到工作站的任何问题,可电询北京科卓了!

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料