NVIDIA 推出的CUDA(計算統一設備架構)是基于GPU 進行通用計算的開發平臺,非常適合大規模的并行數據計算。在GPU 流處理器架構下用CUDA 技術實現編碼并行化,并針對流處理器架構特點進行內存讀寫等方面的優化。
本文在此采用CUDA技術,實現了計算機桌面環境的多屏幕融合顯示的純軟件拼接系統。該系統不但較以往單一的視頻拼接系統功能更加強大,也較采用分屏器等硬件輔助的融合系統成本更低,適應性更強。目前實驗表明,CUDA 技術在并行處理方面的優越性使得該系統畫面實時處理快,互動展示性好,具有很大的商業使用前景。
0 引言
近年來隨著大屏幕顯示技術在各領域應用的逐步深入,市場已經不滿足單一的影片展示,更多的轉向了對互動性更強的計算機桌面環境的融合顯示上來。而目前市場上主流的桌面融合系統,多采用分屏器等硬件輔助設備,成本高,性能差。
統一計算架構(Compute Unified Device Architect-ure,CUDA)是英偉達(NVIDIA)公司近年來推出的通用并行計算架構,它以高性能顯卡GPU為硬件依托,采用CPU+GPU的混合計算極大的提高了大規模的圖形數據實時處理效率。本文設計的視頻顯示系統,采用CUDA開發方式實現了計算機桌面圖片的分割計算、貝塞爾曲線擬合、以及融合圖像計算等三方面處理。實時性高,畫面數據計算理論上精確值1 4 像素,精度好。
1 系統框架設計
圖像處理的本質是大規模矩陣運算,特別適合并行處理。但CPU 通用計算很難利用該特性。與此相反,GPU 在并行數據運算上具有強大的計算能力,特別適合作運算符相同而運算數據不同的運算,當執行具有高運算密度的多數據元素時,內存訪問的延遲可以被忽略。CUDA 編程模型將CPU 作為主機(Host ),GPU作為協處理器(Coprocessor)或設備(Device),一個系統中可以存在多個設備。在這個模型中,CPU 與GPU共同工作,CPU 負責邏輯性強的事務處理和串行計算,GPU 則專注于執行高度線程化的并行處理任務。
本系統以NVIDIA GeForce GTX470 搭建的計算平臺為運行環境,利用顯卡的多頭輸出特性,連接多臺投影儀組成拼接屏幕陣列,不需要額外增加其他硬件設備。由于桌面融合顯示系統要處理的圖像數據大、實時性高的特點,所以本系統的軟件設計上則廣泛使用了多CPU并行編程技術和CUDA并行計算技術,針對每一個投影設備的圖像處理和顯示,系統會分配一個專門的線程來處理。該線程會對應固定的CPU和固定的GPU計算核心,保證多投影設備完全并行處理,從而避免了其他系統由于顯示設備增多,處理數據變大而造成的性能下降。CUDA架構如圖1所示。
本系統在設計中,首先設置定時器。定期采集控制屏幕圖像信息保存到公共存儲空間,然后針對外設顯示設備個數動態的開啟數個線程完成圖像的數據分割、圖像的數據融合以及圖像的顯示等工作。其中在線程開啟初始就與固定的GPU 計算核心相關聯,并把數據圖形分割和融合部分采用CUDA技術進行實現,最后同樣采用定時器技術同步各個線程中圖像數據顯示工作。
通常采用貝塞爾曲線擬合方法來完成圖像數據的融合。該方法的一般做法是先由控制點得出目標圖像每行的貝塞爾曲線,組成二維貝塞爾曲面,再將目標圖像數據采用貼紋理的方法擬合到貝塞爾曲線上從而實現圖像變形。Bezier 曲線是法國雷諾汽車公司Bezier 提出的一種用控制多邊形定義曲線和曲面的方法。它的擬合插值公式為:
式中:Pi 為構成該曲線的特征多邊形;Bi,n (t) 是Bezier基函數,是曲線上各點位置矢量的調和函數。Bezier曲線的始點、末點與其特征多邊形端點重合,且始點、末點的切線方向與特征多邊形的第一和最后一條邊一致。
該曲線具有凸包性、對稱性等特性。貝塞爾曲線的優點是給定足夠的控制點后,它能夠擬合任意形狀的曲線。
Bezier曲線的擬合插值公式中,函數的次數是與特征多邊形的頂點數相應的,當特征多邊形頂點數為4時,就構成三次Bezier 曲線。三次Bezier曲線的擬合插值公式為:
OPenGL技術提供了易于操作的貝塞爾曲線生成函數和貼圖函數,但卻無法控制硬件運算,效率不高。本系統出于對時效性的考慮在實現過程中并未采用該方法,而是采用CUDA技術并行矩陣運算的方式來進行紋理貼圖。根據CUDA 程序的結構特點,本系統處理時,首先根據人機交互部分得到的控制點信息采用通常方法生成目標圖像每行的貝塞爾曲線。開辟顯存存入GPU,然后對應CUDA 程序結構,針對目標圖像上的每一個像素點,為其分配一個GPU thread 來進行處理。
觀察上面的計算公式發現,當獲得了初始控制點坐標后,在得出每一條貝賽爾曲線上的點的過程中,彼此并不影響,具有多線程的粗粒度的特性,所以CUDA 并行計算的時效性有很大的提高。
2 性能評估
在多媒體拼接系統中實時性是最基本、也是最重要的指標。我們觀看到的大屏幕拼接動態效果是由一幀一幀圖片快速顯示而產生的。根據正常的人眼視覺殘留水平系統要達到顯示流暢的畫面,1 s 要處理至少25 張圖片,也就是說整個程序一次圖像處理流程不會超過40 ms.下面本文將分析一下該系統的時效性。
由于圖像采集部分和處理部分采用的是異步方式,時間復用,而顯然處理部分的耗時又遠遠超過采集部分,所以只列出處理部分的時間消耗,又因為該部分效率主要受顯卡GPU 性能影響,所以之對比不同型號GPU 的時間消耗情況。具體如表1所示。
由此我們看出采用GeForce8800GT 顯卡可以基本上完成顯示功能,而采用GeForceGTX470則可以每秒鐘顯示35~40張圖片,是用戶完全感覺流暢的視頻體驗。
3 結語
今年來大屏幕對計算機操作演示的需求越來越多,而高性能顯卡的發展又促使GPU計算逐漸成為大規模并行計算重要的解決途徑。本系統采用了CUDA技術實現了視頻拼接系統,目前本系統采用兩個雙頭顯卡組成顯示功能模塊最多實現四屏拼接,如果需要更多屏幕拼接顯示時可以考慮使用網絡C-S 結構進行擴展。由于耗時的圖像處理部分完全有GPU 進行計算,屏幕越多需要計算的內容也隨之增多,而同時系統顯卡數量也會增多,所以該系統不會隨著拼接屏幕增多而性能下降。由于系統總體采用并行技術,所以將來可以方便地為系統加入時下流行的人機互動模塊、真實感渲染模塊等部分,使之真正成為一款高性能多媒體展示系統,給用戶一個全方位真實的體驗。
-
NVIDIA
+關注
關注
14文章
5025瀏覽量
103268 -
gpu
+關注
關注
28文章
4754瀏覽量
129074 -
CUDA
+關注
關注
0文章
121瀏覽量
13644 -
分屏器
+關注
關注
0文章
4瀏覽量
10768
發布評論請先 登錄
相關推薦
評論