提起大規(guī)??梢暬?,同步是個(gè)始終繞不過(guò)去的話(huà)題。
一旦考慮不當(dāng),該死的畫(huà)面撕裂準(zhǔn)會(huì)找上門(mén)來(lái),使整個(gè)項(xiàng)目無(wú)法驗(yàn)收。
更加糟糕的是很多項(xiàng)目負(fù)責(zé)人往往還對(duì)同步一知半解,這就越發(fā)埋下了深深的隱患。
為此,謹(jǐn)以此文獻(xiàn)給那些垂頭喪氣的項(xiàng)目負(fù)責(zé)人,希望能為烈日炎炎中的他們帶來(lái)一絲清涼。
垂直同步信號(hào)的前世 顯示器顯示畫(huà)面時(shí),電子槍從上到下逐行掃描,掃描完成后顯示器就呈現(xiàn)一幀畫(huà)面。
然后電子槍回到初始位置進(jìn)行下一次掃描。
為了同步顯示器的顯示過(guò)程和系統(tǒng)的視頻控制器,顯示器會(huì)用硬件時(shí)鐘產(chǎn)生一系列的定時(shí)信號(hào)。
當(dāng)電子槍換行進(jìn)行掃描時(shí),顯示器會(huì)發(fā)出一個(gè)水平同步信號(hào),簡(jiǎn)稱(chēng) HSync ;而當(dāng)一幀畫(huà)面繪制完成后,電子槍回復(fù)到原位,準(zhǔn)備畫(huà)下一幀前,顯示器會(huì)發(fā)出一個(gè) 垂直同步信號(hào) ,簡(jiǎn)稱(chēng) VSync 。
顯示器通常以固定頻率進(jìn)行刷新,這個(gè)刷新率就是 VSync 信號(hào)產(chǎn)生的頻率。
CPU 計(jì)算好顯示內(nèi)容提交至 GPU,GPU 渲染完成后將渲染結(jié)果存入幀緩沖區(qū),視頻控制器會(huì)按照 VSync 信號(hào)逐幀讀取幀緩沖區(qū)的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)轉(zhuǎn)換后最終由顯示器進(jìn)行顯示。
最簡(jiǎn)單的情況下,幀緩沖區(qū)只有一個(gè)。
此時(shí),幀緩沖區(qū)的讀取和刷新都都會(huì)有比較大的效率問(wèn)題。
為了解決效率問(wèn)題,GPU 通常會(huì)引入兩個(gè)緩沖區(qū),即 雙緩沖機(jī)制 。
雙緩存機(jī)制即前后緩存。
前緩存就是屏幕上最終看到的像素,而后緩存是繪制使用,后緩存繪制好一幀,通常就交換一次,寫(xiě)給前緩存,而顯示器則從前緩存不斷的讀取數(shù)據(jù)。
圖中f1,也稱(chēng)為交換幀率,f1決定了顯卡一秒能繪制多少次。
顯示器讀取前緩存也存在一個(gè)頻率,即f2,f2為刷新率,即顯卡按照多少的頻率把前緩存的數(shù)據(jù)給顯示器繪制一次。
可見(jiàn)用戶(hù)最終看到的幀率是f1 和 f2的共同結(jié)果。
實(shí)際的幀率f應(yīng)該是在1秒內(nèi)有多少個(gè)后緩存?zhèn)鬟f到了顯示器。
這樣看f=min(f1,f2),即受這兩個(gè)幀率的制約了。
前緩存處于被后緩存寫(xiě)而被顯示器讀的狀態(tài),那么這過(guò)程就極有可能發(fā)生讀寫(xiě)沖突 。
當(dāng)視頻控制器還未讀取完成時(shí),即屏幕內(nèi)容剛顯示一半時(shí),GPU 將新的一幀內(nèi)容提交到幀緩沖區(qū)并把兩個(gè)緩沖區(qū)進(jìn)行交換后,視頻控制器就會(huì)把新的一幀數(shù)據(jù)的下半段顯示到屏幕上,造成畫(huà)面撕裂現(xiàn)象。
它是由于交換幀率與刷新率不同步造成的。
為了解決這個(gè)問(wèn)題,GPU 通常有一個(gè)機(jī)制叫做垂直同步(也簡(jiǎn)寫(xiě) V-Sync),當(dāng)開(kāi)啟垂直同步后,GPU 會(huì)等待顯示器的 VSync 信號(hào)發(fā)出后,才進(jìn)行新的一幀渲染和緩沖區(qū)更新。
這相當(dāng)于將應(yīng)用程序交換緩沖區(qū)同步到垂直同步信號(hào),這樣可解決畫(huà)面撕裂現(xiàn)象。
垂直同步信號(hào)的今生 在大屏項(xiàng)目中,單顯卡多顯示輸出,多顯卡多顯示輸出,甚至多臺(tái)機(jī)器多個(gè)顯示輸出的應(yīng)用環(huán)境非常普遍。
在這種情況下,如何保證多個(gè)顯示輸出的內(nèi)容同步就顯得尤為重要。
⑴ 單顯卡單顯示輸出 只需開(kāi)啟GPU的垂直同步機(jī)制,將應(yīng)用程序交換緩沖區(qū)同步到垂直同步信號(hào)即可。
⑵ 單顯卡多顯示輸出 顯卡所有輸出接口會(huì)多路復(fù)用一個(gè)時(shí)鐘信號(hào),這時(shí)多個(gè)輸出設(shè)備刷新率一樣,發(fā)出垂直同步信號(hào)的時(shí)間也一致。
⑶ 多顯卡多顯示輸出 如下圖所示:多塊顯卡輸出多個(gè)顯示畫(huà)面,這時(shí)每塊顯卡都有自己的時(shí)鐘頻率。
這就會(huì)存在雖然所有輸出設(shè)備可能具有相同的刷新率,但發(fā)出垂直同步信號(hào)的時(shí)間不盡相同,從而導(dǎo)致整個(gè)系統(tǒng)不同步。
為此,需要在不同圖形卡之間提供公共同步信號(hào),以確保所有顯示設(shè)備同時(shí)發(fā)出垂直同步信號(hào)。
這個(gè)公共同步信號(hào)可由Framelock或Genlock來(lái)提供。
新一代NVIDIA Quadro多卡之間的公共同步信號(hào)由Quadro SYNCⅡ提供。
( 英偉達(dá)QuadroSYNC Ⅱ同步卡) (多顯卡同步效果圖) 同步卡可確保所有顯示設(shè)備同時(shí)發(fā)出垂直同步信號(hào),然而要讓畫(huà)面流暢顯示,還需要 將應(yīng)用程序交換緩沖區(qū)同步到垂直同步信號(hào)才行。
如下圖所示:每個(gè)顯示設(shè)備對(duì)應(yīng)的節(jié)點(diǎn)現(xiàn)在都在渲染一個(gè)具有不同復(fù)雜度的場(chǎng)景,不同節(jié)點(diǎn)渲染各自場(chǎng)景所需的時(shí)間各不相同。
當(dāng)每個(gè)節(jié)點(diǎn)以不同的速率運(yùn)行時(shí),用戶(hù)就會(huì)感覺(jué)到在屏幕上出現(xiàn)撕裂。
我們需要一種機(jī)制來(lái)確保每個(gè)節(jié)點(diǎn)同時(shí)交換。
Swap Group在單個(gè)主機(jī)中提供同步多個(gè)GPUS。
使用Swap Group,每個(gè)節(jié)點(diǎn)將等待,直到所有節(jié)點(diǎn)都完成了渲染后,才將應(yīng)用程序交換緩沖區(qū)同步到共同的垂直同步信號(hào),這樣避免了畫(huà)面撕裂。
另外,英偉達(dá)已經(jīng)對(duì)Swap Group進(jìn)行了封裝。
用戶(hù)利用它時(shí),只需在應(yīng)用程序?qū)懭胍欢握{(diào)用SwapGroup API的代碼即可。
并且NVIDIA還給出了具體的調(diào)用方法,如下圖所示: ⑷ 多機(jī)器顯示輸出 Swap Barrier提供跨多臺(tái)主機(jī)間的GPUS同步。
使用Swap Barrier,每個(gè)主機(jī)將等待,直到所有主機(jī)都完成了渲染后,才將應(yīng)用程序交換緩沖區(qū)同步到共同的垂直同步信號(hào),這樣避免了畫(huà)面撕裂。
當(dāng)然應(yīng)用程序調(diào)用Swap Barrier的方法跟調(diào)用Swap Group一樣。
(機(jī)器之間的同步連接示意圖) 大屏項(xiàng)目同步卡的選擇 在大屏項(xiàng)目中,同步卡的選擇也非常重要。
可惜,很多項(xiàng)目經(jīng)理對(duì)其也知之甚少。
今天筆者就把這個(gè)問(wèn)題也給大家徹底講透。
現(xiàn)階段顯卡實(shí)現(xiàn)同步有三種方式,它們分別是2-WAY,NVLINK,QUADROSYNC ‖。
下面就讓小編娓娓道來(lái)吧。
⑴ 2-WAY SLI同步方式。
首先、2-WAY SLI同步方式要求工作站或主板必須通過(guò)SLI認(rèn)證才行。
如,Dell/HP/Lenovo等OEM高端工作站就通過(guò)了SLI認(rèn)證。
其次、2-WAY SLI同步方式只支持兩塊顯卡之間的同步。
最后、只需一個(gè)SLI橋接器接口。
另外,目前支持SLI的主流NVIDIA顯卡只有P4000、P5000、P6000。
⑵ NVLINK同步方式 首先、NVLINK同步方式對(duì)機(jī)器沒(méi)具體要求,只需其可安裝上兩塊支持NVLINK的顯卡即可。
其次、NVLINK同步方式也只支持兩塊顯卡之間的同步。
最后,需要采購(gòu)NVLINK橋接器。
另外,目前支持NVLINK同步放的專(zhuān)業(yè)顯卡有GV100、GP100、RTX5000、RTX6000、RTX8000 ⑶ QUADRO SYNC ‖同步方式 首先、QUADRO SYNC ‖同步方式也對(duì)機(jī)器沒(méi)有具體要求。
只需能安裝下幾塊顯卡即可。
其次、一塊QUADRO SYNC ‖最多可支持4塊顯卡之間的同步 最后、需要采購(gòu)QUADROSYNC ‖同步卡。
另外,目前支持QUADRO SYNC ‖同步卡的專(zhuān)業(yè)顯卡有P4000、P5000、P6000、GV100、GP100、RTX4000、RTX5000、RTX6000、RTX8000 這下您應(yīng)該徹底明白了吧。
在選擇同步卡時(shí),您可根據(jù)項(xiàng)目的實(shí)際情況在上面的三種同步方式中任選一種即可。
好了,大屏同步問(wèn)題今天就介紹到這兒吧。
以后凡是碰到工作站的任何問(wèn)題,可電詢(xún)北京科卓了! 更多精彩內(nèi)容,加入ARC社群掃二維碼或搜索(ID:arinchina),轉(zhuǎn)載請(qǐng)注明版權(quán)和原文鏈接! 聯(lián)系站長(zhǎng): +86 136 7918 4994 >
--------------------
原文地址:https://vr.pbottle.com/a-13768.html