王黎明,鄭 健,呂 琳,楊飛海
(中國人民解放軍91388部隊 廣東 湛江 524022)
海軍戰(zhàn)略戰(zhàn)術(shù)演練與評估需要參與艦艇大量的顯控臺視頻信息,包括雷達、武器發(fā)控、聲納、水聲對抗等標準顯控臺視頻信息。傳統(tǒng)用攝像機攝錄的方法有下列弊?。?)錄取視頻畫面抖動嚴重且清晰度不高,無法準確識別視頻圖像包含的數(shù)據(jù)信息;2)演練時戰(zhàn)位點除戰(zhàn)位人員外往往聚集了許多專家與技術(shù)人員,攝錄位置不能保證。視頻錄取系統(tǒng)在海軍多次的試驗與演練中發(fā)揮了重大的作用,為評估專家與數(shù)據(jù)處理人員提供確實可信的數(shù)據(jù),以供分析和決策。但是現(xiàn)有單套視頻錄取設備最多只能同時錄取兩個顯控臺視頻,如要進行擴展則需要極高的系統(tǒng)硬件配置要求。多核并行計算技術(shù)的出現(xiàn)解決了這一難題,減少了硬件改造成本,也避免了同一戰(zhàn)位需建設多套設備的情況,從而減少占用艦艇空間過多的問題。
并行計算系統(tǒng)是由硬件和軟件組成的統(tǒng)一整體,理想的系統(tǒng)應該是無瓶頸、結(jié)構(gòu)支持應用且應用適應結(jié)構(gòu)的均衡系統(tǒng)[1]。并行計算的基本思想并不復雜,它將一個復雜的工作任務進行分解,然后在多核CPU上同時執(zhí)行這些分解后的任務。CPU多核化要想真正發(fā)揮效益,必須依賴于精心設計的軟件,軟件本身必須具備將工作任務劃分為可并行執(zhí)行的子任務的能力,在操作系統(tǒng)的支持下,將這些任務分配給計算機所配備的多個CPU處理核心并行執(zhí)行,并將結(jié)果進行組合得到最終結(jié)果。之所以要研究并行計算,其目的是獲得更好的性能。一個軟件系統(tǒng)的性能,通常使用響應速度和吞吐率來進行衡量。響應速度是指用戶向軟件系統(tǒng)提交一個任務,軟件系統(tǒng)處理完畢將結(jié)果響應給用戶所花費的時間。吞吐率指單位時間間隔內(nèi)軟件系統(tǒng)最多處理的任務數(shù)。并行計算的優(yōu)勢在于它可以提升多任務環(huán)境下系統(tǒng)的響應速度和吞吐率。實際應用中純粹的并行算法很少,一般的算法包含并行與串行兩部分。常常使用Amdahl加速比定律來衡量一個算法的并行能力[2]:
其中 S是加速比,也稱加速系數(shù)(Speedup Factory),p表示處理器數(shù)量或核心數(shù),f表示串行算法所占比例。顯然,處理器或處理器核心越多,或串行算法比例越小,加速系數(shù)就越大,性能提升越明顯。因此實際應用中,硬件方面應盡可能選擇核心數(shù)多的CPU,軟件部分應盡可能減少程序中的串行算法,提高并行能力。
目前艦艇上標準顯控臺視頻輸入輸出一般采用RGB/RGBHV接口,符合通用軍工標準,因此研制的視頻錄取系統(tǒng)也采用這種視頻標準,具有高度通用性[3]。
視頻錄取系統(tǒng)硬件包括視頻錄取機、高清視頻采集卡、視頻分配器以及標準的RGBHV視頻線纜。視頻錄取機是采用Intel Q8400四核CPU的工業(yè)級便攜式工控機,存儲設備采用RAID0+RAID1的磁盤冗余策略,工控機內(nèi)置4塊符合軍用總線標準[4]的PCI-E高清視頻采集卡。系統(tǒng)可以同時錄取4路1280×1024分辨率的高清視頻。錄取設備與艦艇顯控臺對接的示意圖如圖1所示。
圖1 視頻錄取設備與艦艇顯控臺對接示意圖Fig.1 Connection diagram of video-capturing device to display-console
RGBHV標準視頻線一端連接標準顯控臺機柜視頻輸出端,另一端接視頻分配器輸入端;再用一條視頻線分別接視頻分配器輸出端和顯控臺顯示器;最后用一條視頻線分別接視頻分配器另一輸出端和視頻錄取機的一塊視頻采集卡。其他3路的連接方法與之類似。
2.2.1 基于多線程并發(fā)計算的視頻錄取系統(tǒng)的弊端
現(xiàn)有的視頻錄取系統(tǒng)軟件是基于多線程并發(fā)計算技術(shù)開發(fā)的,沒有考慮當前多核CPU硬件環(huán)境帶來的優(yōu)勢,程序完全交于操作系統(tǒng)分時調(diào)度。操作系統(tǒng)按照時間片將CPU分配給各個線程,在處理當前線程時其他線程處于等待狀態(tài),對于多核CPU環(huán)境來說利用效率太低,而且多路視頻同時采集時會出現(xiàn)各線程執(zhí)行效率不均衡的現(xiàn)象。另外,程序中控制代碼復雜,容易出現(xiàn)多線程編程中常見的線程同步異常以及死鎖現(xiàn)象[5]。
2.2.2 關(guān)鍵技術(shù)
為克服舊有系統(tǒng)的弊病,這里用到了微軟.NET4.0中的并行任務庫(Task Parallel Library,TPL),它是.NET 4.0 為開發(fā)者提供的一組類,位于System.Threading和System.Threading.Tasks這兩個命名空間下,駐留在3個.NET核心程序集mscorlib.dll、System.dll和 System.Core.dll里。它將并行程序抽象級別從“線程(Thread)”提升到“任務”級別[6]。
軟件編寫使用C#語言,在Microsoft Visual Studio 2010環(huán)境下進行開發(fā)。以下是部分關(guān)鍵代碼。
1)并行執(zhí)行任務代碼,用于并行調(diào)用4路視頻錄取代碼。
//引用兩個命名空間
Using System.Threading;
Using System.Threading.Tasks;
//......
//獲取當前系統(tǒng)CPU核心數(shù)
Int numberofCPU=System.Environment.ProcessorCount;
//視頻采集代碼分配到不同的CPU核心,并行調(diào)用視頻錄取代碼
Parallel.For(0,numberofCPU,i=>{
Int iCurrUsedNo;//視頻采集卡卡號
VideoCapture(iCurrUsedNo);}
);
//......
2)視頻錄?。╒ideoCapture)關(guān)鍵代碼。其中,部分函數(shù)引用視頻采集卡公司提供的二次開發(fā)包,視頻編碼可設置為H.264或MPEG4算法。
//......
//打開指定的視頻采集卡
hBoard=okOpenBoard(iCurrUsedNo);
//指定文件路徑以及編碼格式
filename1=fnametmp+".AVI,MPG4" ;
//獲取當前系統(tǒng)時間,精確到毫秒
systime=CurrentTime();
//將時間信息疊加到當前幀
okSetTextTo hBoard,BUFFER, rcRect, lfLogFont, textmode,systime, 23;
//將當前幀存儲到指定的文件
okSaveImageFile hBoard,filename1,imageseq,BUFFER,0, 1;
//以上代碼循環(huán),直到“停止”操作
//......
視頻錄取過程是一個持續(xù)的過程,可以在程序中設置測試點來測試響應速度。吞吐率在這里是指單位時間內(nèi)處理的視頻數(shù)據(jù)流,也就是視頻的幀率。舊有系統(tǒng)的程序是基于多線程并發(fā)計算的,并發(fā)的概念與并行有著本質(zhì)不同,不是真正意義上的“并行”。將這兩種不同算法的軟件安裝在該視頻錄取機上,按圖1布置連接視頻信號源,分別運行這兩種程序,同時錄取4路1280×1024分辨率的視頻,在程序中設置測試點記錄響應時間,并在過程中某一時刻查看CPU使用情況,結(jié)束后查看錄取的視頻文件幀率。并行計算性能測試結(jié)果如表1所示,視頻文件幀率對比結(jié)果如表2所示。
表1 并行計算性能Tab.1 Parallel computing performance
表2 兩種算法錄取結(jié)束后文件幀率的對比Tab.2 File frame rate comparison by two different algorithms
從表1看出,基于新算法的系統(tǒng)體現(xiàn)了真正意義上較好的并行計算性能。
從表2可知,基于舊算法系統(tǒng)錄取的各視頻文件之間幀率相差很大,體現(xiàn)了多線程分時調(diào)度的弊病,如要克服這種不均衡需要編制復雜的控制代碼,而這又會造成不小的系統(tǒng)開銷和增加線程同步異常的機率?;谛滤惴ǖ南到y(tǒng)是將不同通道的視頻采集代碼分配到不同的CPU核心上,錄取的視頻文件幀率基本上接近,體現(xiàn)了系統(tǒng)良好的均衡控制能力。
在實驗過程中某時刻查看CPU使用情況時,發(fā)現(xiàn)基于舊算法系統(tǒng)的CPU核心使用率達到78%,CPU 4個核心的使用記錄曲線極不平衡,如果系統(tǒng)要增加其他功能或運行其他進程有可能會造成阻塞,因此系統(tǒng)可擴展性差;而基于新算法系統(tǒng)的CPU使用率僅為46%,且各核心使用記錄曲線非常均衡,系統(tǒng)仍有較大的可擴展性。
筆者介紹了一種基于并行計算技術(shù)的艦艇標準顯控臺視頻錄取系統(tǒng),重點敘述了該系統(tǒng)軟件關(guān)鍵部分的技術(shù)及實現(xiàn)。通過與舊有基于多線程并發(fā)計算技術(shù)的視頻錄取系統(tǒng)的性能對比,基于新算法系統(tǒng)錄取的視頻數(shù)據(jù)幀率均衡穩(wěn)定,系統(tǒng)響應快,CPU使用率低,系統(tǒng)總體開銷小,系統(tǒng)可擴展性強。該系統(tǒng)可以根據(jù)艦艇任務的實際需求,擴展視頻采集卡數(shù)量,增加其他功能(如作戰(zhàn)系統(tǒng)總線數(shù)據(jù)錄取等),從而實現(xiàn)更高的系統(tǒng)集成度和使用效率。
[1]楊曉東,陸松,牟勝梅.并行計算機體系結(jié)構(gòu)技術(shù)與分析[M].北京:科學出版社,2009.
[2]孫敏.基于并行結(jié)構(gòu)骨架的并行程序設計環(huán)境研究與實現(xiàn)[D].天津:天津大學,2008.
[3]陳正捷,藺宏江,陳志昊.國外軍用計算機數(shù)據(jù)交換技術(shù)的發(fā)展[J].兵工自動化,2010,29(4):25-29.CHEN Zheng-jie, LIN Hong-jiang, CHEN Zhi-hao.Development of foreign military computer data exchange technology[J].Ordnance Industry Automation, 2010, 29(4): 25-29.
[4]唐慧.基于PCI總線多路圖像采集卡的研究[D].哈爾濱:哈爾濱工業(yè)大學,2006.
[5]Michaelis M著.C#本質(zhì)論[M].周靖,譯.北京:人民郵電出版社,2008.
[6]金旭亮.NET 4.0面向?qū)ο舐劇獞闷猍M].北京:電子工業(yè)出版社,2010.