鄧 婕 張興浦 陳世友
(1.武漢數(shù)字工程研究所 武漢 430205)(2.海軍海南地區(qū)裝備修理監(jiān)修室 三亞 572018)
基于GPU的信息融合并行方法研究*
鄧婕1張興浦2陳世友1
(1.武漢數(shù)字工程研究所武漢430205)(2.海軍海南地區(qū)裝備修理監(jiān)修室三亞572018)
摘要針對(duì)多傳感器信息融合處理時(shí)延大和高實(shí)時(shí)性要求之間的矛盾,提出一種基于GPU的并行計(jì)算方法,并針對(duì)并行方法進(jìn)行了模擬仿真。實(shí)驗(yàn)結(jié)果表明,GPU并行方法適用于信息融合技術(shù),為解決融合算法耗時(shí)大的問(wèn)題提供了一種新思路。
關(guān)鍵詞信息融合; 并行計(jì)算; GPU; CUDA
Class NumberTP391
1引言
多傳感器信息融合可以通過(guò)綜合處理多個(gè)傳感器的信息來(lái)獲取單個(gè)傳感器無(wú)法取到的信息,降低檢測(cè)對(duì)象的不確定性,并減少干擾造成的影響,提高判斷和決策的準(zhǔn)確度和可信度。然而因?yàn)楝F(xiàn)有算法的高復(fù)雜性,導(dǎo)致隨著傳感器數(shù)量的增加,數(shù)據(jù)源增多導(dǎo)致數(shù)據(jù)量增大,以及信息表現(xiàn)形式的多種多樣、信息間關(guān)系復(fù)雜性的增加,導(dǎo)致信息融合過(guò)程在目標(biāo)密集環(huán)境下耗時(shí)呈指數(shù)增長(zhǎng)。然而嵌入式系統(tǒng)對(duì)信息融合處理過(guò)程的實(shí)時(shí)性要求非常高,因此需要一種有效的方法將多傳感器處理過(guò)程并行化,通過(guò)充分協(xié)調(diào)計(jì)算機(jī)性能來(lái)解決高實(shí)時(shí)性和大任務(wù)量之間的矛盾。
在信息融合領(lǐng)域,已有大量關(guān)于并行計(jì)算方法的研究,如國(guó)外的Pankaj[1]、國(guó)內(nèi)的丁龍[2]和夏學(xué)知[4]等都想到了利用群機(jī)進(jìn)行任務(wù)分配的并行方法;Davis PB等就提出了基于超立方體多處理器的并行數(shù)據(jù)融合算法[4];郭強(qiáng)從融合模塊角度提出了基于卡爾曼濾波的數(shù)據(jù)融合算法[5],丁龍等[6]和周樂(lè)儒等[7]均提出了用于輻射源識(shí)別的并行系統(tǒng)。而萬(wàn)文福[8]、何勇[9]和施炎龍[10]等還嘗試了多種單機(jī)并行算法的設(shè)計(jì)和實(shí)現(xiàn),并取得了良好的結(jié)果。在上述各情況中,程序數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,直接由CPU讀取并由CPU程序調(diào)度執(zhí)行,最后由CPU返回運(yùn)行結(jié)果。本文提出一種基于GPU的程序并行方法,將程序數(shù)據(jù)存儲(chǔ)在GPU顯存中,并由GPU程序讀取和調(diào)度。
CPU由于其體系結(jié)構(gòu)限制,大部分片上資源都用于控制和緩存,導(dǎo)致實(shí)際計(jì)算單元非常有限,無(wú)法滿足各種應(yīng)用日益增多的需求。GPU進(jìn)行大規(guī)模集成運(yùn)算的能力以及存儲(chǔ)器帶寬都要比CPU強(qiáng)很多,再加上通用計(jì)算技術(shù)的飛速發(fā)展,使GPU從最初的只能單純進(jìn)行圖像的渲染和輸出工作轉(zhuǎn)化為可對(duì)很多領(lǐng)域的計(jì)算進(jìn)行處理。英偉達(dá)公司提出來(lái)統(tǒng)一并行通用計(jì)算架構(gòu)(Compute Unified Device Architecture, CUDA),這一架構(gòu)作為GPU的編程平臺(tái)支持類似C語(yǔ)言的軟件開(kāi)發(fā)語(yǔ)言,并支持CPU和GPU協(xié)同工作,其中CPU負(fù)責(zé)串行計(jì)算,GPU負(fù)責(zé)并行計(jì)算并由CPU進(jìn)行調(diào)度工作。
本文針對(duì)現(xiàn)有信息融合系統(tǒng)結(jié)構(gòu)的特點(diǎn),結(jié)合GPU并行編程方法,設(shè)計(jì)出一種適用于CPU、GPU多層次多線程并行計(jì)算的方法,并進(jìn)行了仿真實(shí)驗(yàn)。
2算法架構(gòu)流程
常用的信息融合系統(tǒng)數(shù)據(jù)處理過(guò)程都是單線程模型,線程在程序的生命周期內(nèi)不斷循環(huán),具體流程如圖1所示。
圖1 單線程循環(huán)流程圖
并行后的流程如圖2,系統(tǒng)設(shè)置一個(gè)時(shí)間間隔t和兩個(gè)CPU線程,采用流水線方式,CPU線程1將t秒內(nèi)收到的數(shù)據(jù)存入數(shù)組,t秒達(dá)到后由CPU線程2轉(zhuǎn)移到GPU,然后在下一個(gè)t秒內(nèi),線程1繼續(xù)進(jìn)行數(shù)據(jù)收集,而線程2啟動(dòng)N個(gè)GPU線程同步進(jìn)行數(shù)據(jù)處理,這樣實(shí)現(xiàn)了CPU與GPU的并行工作。而在GPU上,采用最簡(jiǎn)單的線程分配方法,即每個(gè)數(shù)據(jù)分配一個(gè)線程進(jìn)行處理,實(shí)現(xiàn)了GPU上多線程的并行,因而實(shí)現(xiàn)了CPU、GPU多層并行。圖3是CUDA程序執(zhí)行流程圖,由于GPU受CPU調(diào)度控制,因此CPU稱為主機(jī)端,GPU稱為設(shè)備端。CUDA程序由主機(jī)端串行程序和設(shè)備端并行函數(shù)(稱為Kernel函數(shù))組成,串行程序會(huì)進(jìn)行數(shù)據(jù)的準(zhǔn)備和GPU線程啟動(dòng)前各項(xiàng)環(huán)境的準(zhǔn)備,準(zhǔn)備好后調(diào)用Kernel函數(shù),并在調(diào)用時(shí)指明調(diào)用的線程個(gè)數(shù)。
每一次GPU并行計(jì)算的過(guò)程,都包括主機(jī)端準(zhǔn)備、主機(jī)端調(diào)用設(shè)備端、設(shè)備端執(zhí)行和設(shè)備端返回結(jié)果四個(gè)階段,一個(gè)CUDA程序中可以包含多次GPU并行過(guò)程,如圖3中就指示了至少兩次并行過(guò)程。
3實(shí)現(xiàn)方法
基于圖2所設(shè)計(jì)的算法流程圖,結(jié)合圖3說(shuō)明的CUDA程序執(zhí)行流程圖,進(jìn)行實(shí)驗(yàn)的模擬和仿真。實(shí)驗(yàn)中沒(méi)有進(jìn)行完整融合流程的并行,而是挑選了預(yù)處理模塊進(jìn)行并行,即簡(jiǎn)化了圖2中GPU線程的工作,進(jìn)行了如圖4的流程模擬。因?yàn)閷?duì)圖1原始融合過(guò)程進(jìn)行計(jì)算時(shí)間的分析后發(fā)現(xiàn),每次循環(huán)內(nèi),預(yù)處理模塊花費(fèi)的時(shí)間約占時(shí)間的70%,因此選用這個(gè)最具有代表性的模塊進(jìn)行了實(shí)驗(yàn)。
圖3 CUDA程序執(zhí)行流程圖
圖4 CUDA程序執(zhí)行流程圖
3.1實(shí)驗(yàn)環(huán)境
CUDA環(huán)境主要分為:硬件、操作系統(tǒng)、C/C++編譯器和CUDA工具包。硬件主要是指GPU設(shè)備,必須是支持CUDA的GPU。實(shí)驗(yàn)項(xiàng)目中使用的是英偉達(dá)顯卡GTX970,CPU端使用8核處理器和8GB內(nèi)存;操作系統(tǒng)為Windows 7專業(yè)版,64位操作系統(tǒng);編譯器為Visual Studio 2010旗艦版。CUDA工具包需要在操作系統(tǒng)和編譯器都安裝完畢后才能安裝,安裝過(guò)程中會(huì)自動(dòng)生成對(duì)應(yīng)編譯器插件。
3.2時(shí)間結(jié)果
選取兩組模擬數(shù)據(jù)進(jìn)行并行,選取時(shí)間間隔t為1s,在保證計(jì)算結(jié)果正確的前提下,挑選部分時(shí)間結(jié)果見(jiàn)下表1、表2,表格中第一行為編號(hào);第二行為某一秒并行的數(shù)據(jù)個(gè)數(shù),第三行列出當(dāng)秒內(nèi)數(shù)據(jù)GPU計(jì)算所花的真正時(shí)間。
3.3性能分析
因?yàn)椴煌瑪?shù)據(jù)會(huì)采取不同的預(yù)操作,所以表中時(shí)間波動(dòng)屬于正常范圍。由表可知,在每個(gè)時(shí)間間隔1s內(nèi),GPU真正計(jì)算時(shí)間花費(fèi)最多的約為0.1s,最少的不到0.01s,完全符合期望的流水線計(jì)算。
然而算法中,時(shí)間間隔t的選擇有一定的局限性。因?yàn)槎鄠€(gè)GPU線程并行執(zhí)行時(shí),沒(méi)有考慮線程間數(shù)據(jù)相關(guān)聯(lián)的問(wèn)題,所以一定要保證t時(shí)間內(nèi)的數(shù)據(jù)相互獨(dú)立。如果t的選擇太小,會(huì)導(dǎo)致每次并行數(shù)據(jù)太少,GPU利用率太低;如果t的選擇太大,會(huì)導(dǎo)致采集到的數(shù)據(jù)屬于同一條航跡,影響融合結(jié)果的正確性。實(shí)驗(yàn)中的1s是在保證了數(shù)據(jù)間獨(dú)立的情況下能取到的最大時(shí)間間隔,每秒最多收集到四個(gè)數(shù)據(jù)即每次最多并行四個(gè)數(shù)據(jù),而GTX970有1664個(gè)核,使用率還不到0.5%,所以算法可用于更復(fù)雜的融合環(huán)境,能保證在相同的時(shí)間內(nèi)擁有更高的GPU的利用率。
表1 并行后處理數(shù)據(jù)一時(shí)間
表2 并行后處理數(shù)據(jù)二時(shí)間
4結(jié)語(yǔ)
本文設(shè)計(jì)了一種基于GPU的并行信息融合方法,提出了CPU和GPU多層并行融合的算法思想,并進(jìn)行了實(shí)驗(yàn)驗(yàn)證,證明了結(jié)果的正確性,并行效率滿足常用融合環(huán)境需求。介紹了算法對(duì)于時(shí)間間隔參數(shù)選擇的局限性,并說(shuō)明了如何選擇參數(shù)來(lái)保證高效和正確的計(jì)算結(jié)果,為解決信息融合過(guò)程時(shí)延大的問(wèn)題提供了一種友好的解決方案。
參 考 文 獻(xiàn)
[1] Pankaj Gupta, Guru Prasad. A scalable portable object oriented framework for parallel multisensor data-fusion applications in HPC systems[J].Proc. of the SPIE,2004,5434:295-306.
[2] 丁龍,王寶樹(shù),喬向東等.基于群機(jī)并行的數(shù)據(jù)融合算法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2001,37(19):92-94.
[3] 夏學(xué)知,涂葵.多傳感器數(shù)據(jù)融合并行處理技術(shù)[J].計(jì)算機(jī)應(yīng)用,2005,25(8):1814-1817.
[4] Davis PB, Cate D, Abidi MA. Parrallel Data Fusion on a Hypercube Multiprocessor[J]. Processing of SPIE Conference on Sensor Fusion,1990,1383(11):515-529.
[5] Guo Q, Yu SN. The multisensory data fusion parallel algorithm based on Kalman filtering[C]// Computational Electromagnetics amd Its Application 2004. Proceedings. ICCEA 2004. 2004 3rd International Coference on. IEEE,2004:573-576.
[6] 丁龍,王寶樹(shù),喬向東,等.基于群機(jī)并行的數(shù)據(jù)融合算法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2001,37(19):92-94.
[7] 周樂(lè)儒.數(shù)據(jù)融合系統(tǒng)中并行目標(biāo)識(shí)別的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(5):189-191.
[8] 萬(wàn)文福.基于PVM的數(shù)據(jù)融合并行任務(wù)調(diào)度[J].艦船電子工程,2006,26(3):5-12.
[9] 何勇,張必銀.多傳感器數(shù)據(jù)融合并行處理方法研究[J].艦船電子工程,2011,31(8):56-59.
[10] 施巖龍,王雪,陸小科.面向多雷達(dá)數(shù)據(jù)融合的并行數(shù)據(jù)編排框架研究[J].現(xiàn)代雷達(dá),2015,37(10):39-42.
Parallel Method Techniques for Information Fusion Based on GPU
DENG Jie1ZHANG Xingpu2CHEN Shiyou1
(1.Wuhan Digital Engineering Institute, Wuhan430205)(2.Navy Supervision Office for Equipment Repair in Hainan Area, Sanya572018)
AbstractIn order to solve the contradiction between large-time delay and high real-time requirement of multi sensor information fusion, A parallel method based on GPU is proposed and simulated. The result of simulation shows that the method is effective, which provides new mentality to solve the large time-cosuming of information fusion algorithm.
Key Wordsinformation fusion, parallel computing, GPU, CUDA
*收稿日期:2015年12月4日,修回日期:2016年1月19日
作者簡(jiǎn)介:鄧婕,女,碩士研究生,研究方向:信息融合技術(shù)。張興浦,男,碩士研究生,高級(jí)工程師,研究方向:電子與信息工程。陳世友,男,博士,研究員,研究方向:信息融合技術(shù)、信息系統(tǒng)技術(shù)。
中圖分類號(hào)TP391
DOI:10.3969/j.issn.1672-9730.2016.06.010