陶 亮
(中國(guó)電子科技集團(tuán)第十四研究所 江蘇·南京 210000)
在GPU的基礎(chǔ)上構(gòu)建軟件雷達(dá)終端,采用CPU(中央處理器)平臺(tái)常規(guī)處理雷達(dá)信號(hào),和在CPU平臺(tái)上進(jìn)行雷達(dá)信號(hào)處理的過(guò)程不同:CPU-GPU所組成的異構(gòu)系統(tǒng)的平均計(jì)算速率比CPU平臺(tái)快了100倍以上,且遠(yuǎn)遠(yuǎn)未達(dá)到GPU的計(jì)算極限,最大誤差在5×10-4以下。這也就意味著,基于GPU的并行運(yùn)算能力突出優(yōu)勢(shì),與CPU互補(bǔ),構(gòu)建CPU-GPU的異構(gòu)系統(tǒng),既能發(fā)揮軟件無(wú)線電技術(shù)的優(yōu)勢(shì),有效地獲取各項(xiàng)數(shù)據(jù),又能實(shí)時(shí)進(jìn)行數(shù)據(jù)處理,達(dá)到軟件雷達(dá)在信號(hào)處理方面的實(shí)效性要求,隨著回波采樣點(diǎn)等數(shù)據(jù)量的增加,信號(hào)處理的吞吐量也會(huì)不斷增加,很好地滿足了軟件雷達(dá)信號(hào)處理的大吞吐量及高實(shí)時(shí)性的需求,克服以往軟件雷達(dá)信號(hào)處理計(jì)算速度慢、計(jì)算量少等問(wèn)題。
圖1:基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)
軟件雷達(dá),是無(wú)線電技術(shù)在雷達(dá)領(lǐng)域中的應(yīng)用,其硬件平臺(tái)包含了通用處理計(jì)算機(jī)、變頻組件以及天線系統(tǒng)、雷達(dá)顯控終端以及高速模/數(shù)采樣器件等部分。其信號(hào)處理過(guò)程是,在變頻組件內(nèi)通過(guò)變頻轉(zhuǎn)換,將雷達(dá)接收到的信號(hào)轉(zhuǎn)換為中頻信號(hào),并將其傳送到高速模/數(shù)采樣器件中,轉(zhuǎn)變?yōu)閿?shù)字信號(hào),最后將數(shù)字信號(hào)輸送到計(jì)算平臺(tái)中,進(jìn)行雷達(dá)信號(hào)處理。基于GPU的軟件雷達(dá)信號(hào)處理過(guò)程大體也是如此,主要包含三大模塊,一是數(shù)據(jù)讀取模塊,將接收機(jī)處理的基帶數(shù)據(jù)讀入后,獲取報(bào)文的各種標(biāo)志、數(shù)據(jù)并重組,從而獲得預(yù)處理后的回波數(shù)據(jù);二是信號(hào)處理模塊,是整個(gè)信號(hào)處理系統(tǒng)的核心,將預(yù)處理后的回波數(shù)據(jù)先進(jìn)行脈沖壓縮轉(zhuǎn)變?yōu)镻C數(shù)據(jù),再進(jìn)行MTD或是MTI處理,并在MTD的結(jié)果上實(shí)施二維CFA R處理;三是信號(hào)輸出模塊,包含了CFAR結(jié)果輸出、信號(hào)處理模塊中間過(guò)程(PC結(jié)果等),且產(chǎn)生的數(shù)據(jù)可基于實(shí)際需求進(jìn)行輸出與儲(chǔ)存。以下是具體的系統(tǒng)流程圖:
在整個(gè)雷達(dá)信號(hào)處理過(guò)程中,在CPU-GPU的異構(gòu)系統(tǒng)中,信號(hào)的調(diào)度以及流程全部由CPU負(fù)責(zé),先開(kāi)辟單個(gè)子模塊運(yùn)算所需的內(nèi)存空間以及顯存空間,并在獲取GPU初始化參數(shù)前提下創(chuàng)建主機(jī)端線程實(shí)現(xiàn)對(duì)雷達(dá)顯控終端的管理,通過(guò)“主機(jī)——設(shè)備端——主機(jī)”的流程,將獲取的數(shù)據(jù)從計(jì)算機(jī)主機(jī)內(nèi)存?zhèn)鬏數(shù)阶冾l組件,再對(duì)數(shù)據(jù)進(jìn)行密集型計(jì)算輸送到雷達(dá)顯控終端。
基于GPU的軟件雷達(dá)信號(hào)處理,主要是通過(guò)CPU-GPU的異構(gòu)系統(tǒng),實(shí)現(xiàn)多個(gè)模塊雷達(dá)信號(hào)處理,以滿足軟件雷達(dá)信號(hào)處理的標(biāo)準(zhǔn)化、實(shí)時(shí)性、模塊化等要求。以下是基于GPU的軟件雷達(dá)信號(hào)處理計(jì)算模型:
先要在軟件雷達(dá)的主機(jī)端創(chuàng)建任務(wù)列表,以采樣中頻數(shù)據(jù),通過(guò)CPU主線程實(shí)現(xiàn)對(duì)任務(wù)級(jí)別的劃分與管控,由Open-Multi-Processing開(kāi)辟CPU并行線程,進(jìn)行雷達(dá)信號(hào)處理的任務(wù)調(diào)度以及配置設(shè)備端ID工作,從而依次序訪問(wèn)任務(wù)隊(duì)列。然后,則是在CPU-GPU異構(gòu)系統(tǒng)上,通過(guò)GPU以輪轉(zhuǎn)的形式分配各個(gè)任務(wù),將獲取的數(shù)據(jù)以迭代的形式傳輸?shù)较鄳?yīng)的GPU上,從而實(shí)現(xiàn)多個(gè)GPU模塊并行且負(fù)載平衡。如,將第n個(gè)采集的數(shù)據(jù)以迭代的形式傳輸至第n mod q個(gè)GPU上,其中q是GPU的并行個(gè)數(shù)。
由于每個(gè)脈沖重復(fù)周期t內(nèi)的采樣點(diǎn)在周期內(nèi)沒(méi)有關(guān)聯(lián)性,進(jìn)行正交相位檢波和脈沖壓縮計(jì)算時(shí),可實(shí)現(xiàn)多個(gè)周期內(nèi)的采樣數(shù)據(jù)級(jí)的并行處理,從而得到近似線性的加速比。為了在數(shù)據(jù)級(jí)并行處理過(guò)程中,得到較高的計(jì)算訪存比,可把整個(gè)脈沖壓縮后的二維數(shù)組劃分成q個(gè)n×m數(shù)據(jù)部分,實(shí)現(xiàn)壓縮后的rn×k二維數(shù)組轉(zhuǎn)變?yōu)閚×m數(shù)據(jù),每個(gè)二維數(shù)組域內(nèi)中每一行都包含了m=kmodq個(gè)采樣點(diǎn)。如此一來(lái),就能運(yùn)用并行GPU中的每個(gè)GPU模塊對(duì)重構(gòu)的q個(gè)n×m數(shù)據(jù)部分進(jìn)行并行計(jì)算,且二維數(shù)據(jù)域?qū)Σ⑿蠫PU的映射為一個(gè)線程網(wǎng)絡(luò),以保證數(shù)據(jù)級(jí)并行處理時(shí),單個(gè)的GPU只需要迭代計(jì)算所屬域內(nèi)的重構(gòu)數(shù)據(jù)。
線程級(jí)的并行算法,主要是在信號(hào)處理的數(shù)學(xué)模型與GPU并行計(jì)算的硬件特性上,通過(guò)將數(shù)值計(jì)算映射到GPU細(xì)粒度并發(fā)線程,從而實(shí)現(xiàn)多個(gè)線程數(shù)據(jù)并行計(jì)算。
(1)在軟件雷達(dá)信號(hào)處理過(guò)程中,通過(guò)正交相位檢波將中頻信號(hào)轉(zhuǎn)變?yōu)榱阒蓄l的I、Q兩路正交信號(hào)。在轉(zhuǎn)變過(guò)程中要先把正交混頻信號(hào)以及整段脈沖重復(fù)周期內(nèi)的采樣數(shù)據(jù)輸入內(nèi)核函數(shù)后,再進(jìn)行點(diǎn)乘處理,使得每個(gè)線程塊都能實(shí)現(xiàn)n維度的采樣數(shù)據(jù)計(jì)算,每個(gè)采樣數(shù)據(jù)都可以看作是一個(gè)處理單元,并能映射到相關(guān)線程之中。具體過(guò)程:通過(guò)仿真計(jì)算得到數(shù)字低通濾波器的相關(guān)系數(shù)后,依照紋理緩存不斷地提高采樣書(shū)籍的讀取速度(利用GPU紋理存儲(chǔ)器內(nèi)的高速片上緩存功能),使得以權(quán)庫(kù)的形式呈現(xiàn)的濾波器系數(shù),在正交相位檢波模塊中能即可讀取出來(lái)。
(2)利用MTI/MTD對(duì)輸入的采樣數(shù)據(jù)進(jìn)行運(yùn)算。由于顯存空間中都是以“先進(jìn)先出”的形式儲(chǔ)存脈沖壓縮后的回波數(shù)據(jù),對(duì)于脈沖沖突周期內(nèi)的數(shù)字信號(hào)進(jìn)行迭代運(yùn)算,則應(yīng)經(jīng)過(guò)線程檢索引號(hào)來(lái)執(zhí)行,每個(gè)線程需分別維護(hù)值經(jīng)延遲線加權(quán)與相同距離分辨單元采樣點(diǎn)隔周期。特別是動(dòng)目標(biāo)的檢測(cè),應(yīng)在固定二次消器(MTI)后以串聯(lián)窄帶濾波器組的方式,實(shí)現(xiàn)對(duì)整個(gè)重復(fù)頻率范圍的覆蓋,通過(guò)不同的數(shù)字通道,運(yùn)用FFT濾波器處理采樣數(shù)據(jù)信號(hào)后再進(jìn)行MTD運(yùn)算。MTD的具體運(yùn)算過(guò)程中,要把相鄰m個(gè)重復(fù)周期內(nèi)的數(shù)據(jù)作為一維數(shù)組儲(chǔ)存起來(lái),再通過(guò)棋盤劃分進(jìn)行矩陣轉(zhuǎn)置,對(duì)矩陣每一行數(shù)據(jù)進(jìn)行FFT運(yùn)算。
(3)通過(guò)脈沖積累和恒虛警檢測(cè)提高算法效率,將共享儲(chǔ)存器作為線程通信載體、實(shí)現(xiàn)中間數(shù)據(jù)的訪存,發(fā)揮共享儲(chǔ)存器的作用,高效地進(jìn)行數(shù)據(jù)運(yùn)算。利用共享儲(chǔ)存器的最大優(yōu)勢(shì),在于實(shí)現(xiàn)數(shù)據(jù)復(fù)用的同時(shí),避免由于重疊數(shù)據(jù)元素導(dǎo)致的線程之間訪問(wèn)競(jìng)爭(zhēng)問(wèn)題,通過(guò)將運(yùn)算數(shù)據(jù)分段復(fù)制到線程塊內(nèi)的共享儲(chǔ)存器中,降低全局儲(chǔ)存器中數(shù)據(jù)讀取的頻率?;贕PU的軟件雷達(dá)信號(hào)處理過(guò)程中,脈沖積累運(yùn)算時(shí)可用棋盤的形式劃分整個(gè)數(shù)據(jù)域,并將劃分后的數(shù)據(jù)域輸送到并行GPU中,先將矩陣看成成n行m列的矩陣,然后把整個(gè)線程網(wǎng)絡(luò)劃分成n個(gè)線程塊,這樣每個(gè)線程塊就對(duì)應(yīng)m各數(shù)據(jù)的運(yùn)算,每個(gè)GPU的運(yùn)算結(jié)果就是一列的數(shù)據(jù)。然后,則是將每個(gè)線程塊處理得到每列數(shù)據(jù)從顯存復(fù)制到共享儲(chǔ)存器,按照并行歸約的方式進(jìn)行求和處理,調(diào)用sync-threads()函數(shù)將求和后的數(shù)據(jù)設(shè)置成柵欄同步,再將每個(gè)線程塊內(nèi)運(yùn)算得到的結(jié)果輸入到全局存儲(chǔ)器(n維)中儲(chǔ)存起來(lái)。這樣一來(lái),通過(guò)對(duì)每個(gè)距離單元兩側(cè)各點(diǎn)的采樣數(shù)據(jù)進(jìn)行求和處理,就能完成均值類恒虛警檢測(cè)算。
軟件雷達(dá)系統(tǒng)的計(jì)算平臺(tái),所采用的 GPU(NVIDIATeslaC2050)以及CPU(IntelCorei7@2.67GHz)選用相同的運(yùn)算模型以及運(yùn)行參數(shù),以O(shè)penMulti-Processing展開(kāi)并行執(zhí)行循環(huán)以及迭代運(yùn)算,所有的采樣數(shù)據(jù)都通過(guò)用英特爾數(shù)學(xué)核心函數(shù)庫(kù)實(shí)現(xiàn)傅立葉變換。在仿真分析中,使用線性調(diào)頻形式的雷達(dá)信號(hào),以8點(diǎn)FFT多普勒濾波器組和雙延遲線對(duì)消器實(shí)現(xiàn)動(dòng)目標(biāo)檢測(cè)與顯示。結(jié)果顯示,在采樣點(diǎn)數(shù)相同時(shí),基于 CPU處理的計(jì)算機(jī)設(shè)備無(wú)法處理信號(hào)的執(zhí)行時(shí)間控制在10個(gè)脈沖重復(fù)周期內(nèi),隨著并行GPU數(shù)量的增加處理,信號(hào)處理的執(zhí)行時(shí)間會(huì)不斷縮短;在采樣點(diǎn)數(shù)較少的情況系,GPU*3與GPU*4執(zhí)行速度相似,但與GPU*1的執(zhí)行速度相比,其執(zhí)行速度沒(méi)有明顯的上升趨勢(shì);采樣點(diǎn)數(shù)不斷增加后,基于 GPU的軟件雷達(dá)信號(hào)處理算法執(zhí)行速度才彰顯出明顯的優(yōu)勢(shì)。此外,基于CPU-GPU異構(gòu)系統(tǒng)的軟件雷達(dá)信號(hào)處理方法,其實(shí)測(cè)數(shù)據(jù)處理效果更為顯著,無(wú)論是雷達(dá)信號(hào)中的噪聲和干擾信號(hào),還是噪聲、云雨雜波強(qiáng)度、地物雜波等,都得到了有效的抑制,目標(biāo)回波的信噪比顯著提升。
綜上所述,基于GPU(圖形處理器)與CPU(中央處理器)各自的優(yōu)勢(shì),采用任務(wù)級(jí)、數(shù)據(jù)級(jí)和線程級(jí)三級(jí)并行策略,進(jìn)行軟件雷達(dá)信號(hào)處理,有利于提高軟件雷達(dá)信號(hào)處理的實(shí)效性與計(jì)算速度。鑒于此,基于GPU進(jìn)行軟件雷達(dá)信號(hào)處理,應(yīng)針對(duì)軟件雷達(dá)的特點(diǎn),根據(jù)無(wú)線電相關(guān)技術(shù)在雷達(dá)領(lǐng)域的應(yīng)用情況,在任務(wù)級(jí)、數(shù)據(jù)級(jí)和線程級(jí)三級(jí)并行方案之上,構(gòu)建CPU-GPU的異構(gòu)系統(tǒng),實(shí)現(xiàn)多GPU并行處理軟件雷達(dá)信號(hào),從而滿足軟件雷達(dá)信號(hào)處理的大吞吐量和高實(shí)時(shí)性要求。