田乾元,徐朝陽(yáng),趙 泉
(中國(guó)船舶重工集團(tuán)公司第七二三研究所,江蘇 揚(yáng)州 225101)
雷達(dá)終端接收待處理的回波數(shù)據(jù),通過(guò)信號(hào)處理系統(tǒng)這一重要環(huán)節(jié),將龐大數(shù)量的回波數(shù)據(jù)進(jìn)行脈沖壓縮、雜波抑制、動(dòng)目標(biāo)顯示(MTI)、動(dòng)目標(biāo)檢測(cè)(MTD)、恒虛警率(CFAR)檢測(cè)等處理,然后輸出有用的數(shù)據(jù)或圖像。最近幾年,通信技術(shù)、存儲(chǔ)技術(shù)的大力發(fā)展,使得回波數(shù)據(jù)量大大增加,數(shù)據(jù)傳輸速度加快,對(duì)數(shù)據(jù)處理的實(shí)時(shí)性提出了新的要求。單就MTD的仿真過(guò)程,數(shù)據(jù)吞吐量就達(dá)到了GB量級(jí)。為了滿(mǎn)足信號(hào)處理的實(shí)時(shí)性要求,雷達(dá)信號(hào)處理的軟件化十分重要,之前的主流方案一般都采用軟件和硬件耦合緊密的多數(shù)字信號(hào)處理(DSP)+現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)板實(shí)現(xiàn)[1-3]。最近幾年,基于通用計(jì)算機(jī)平臺(tái)的計(jì)算機(jī)圖形處理器(GPU) 運(yùn)算能力的提升逐漸可為軟件雷達(dá)的實(shí)現(xiàn)提供硬件支持[4-6]。GPU具有高并行度、多線(xiàn)程、高存儲(chǔ)器帶寬和強(qiáng)大的算術(shù)計(jì)算能力,而愈發(fā)成熟的統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)將GPU傳統(tǒng)的圖形處理能力與應(yīng)用廣泛的C語(yǔ)言編程相結(jié)合,充分發(fā)掘了其強(qiáng)大的通用并行計(jì)算能力,非常適用于雷達(dá)信號(hào)處理過(guò)程。
如圖1所示,基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)由三大模塊組成:數(shù)據(jù)讀取模塊,是將接收機(jī)處理的基帶數(shù)據(jù)讀入,讀取報(bào)文各標(biāo)志、讀取回波數(shù)據(jù)并重組,得到預(yù)處理后的回波數(shù)據(jù);信號(hào)處理模塊是信號(hào)處理系統(tǒng)的核心,經(jīng)過(guò)預(yù)處理之后的回波數(shù)據(jù)先經(jīng)過(guò)脈沖壓縮(PC),得到PC數(shù)據(jù),然后按照需要進(jìn)行MTI處理或者M(jìn)TD處理,在MTD結(jié)果的基礎(chǔ)上進(jìn)行CFAR處理;信號(hào)輸出模塊不只是CFAR結(jié)果的輸出,還包括信號(hào)處理模塊中間過(guò)程(類(lèi)如PC結(jié)果),產(chǎn)生的數(shù)據(jù)可以按照實(shí)際需求進(jìn)行輸出并存儲(chǔ)。
圖1 基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)
對(duì)于信號(hào)處理模塊,又包括脈沖壓縮、MTI、MTD和CFAR幾個(gè)大致處理環(huán)節(jié)。以下來(lái)說(shuō)明基于GPU的各個(gè)環(huán)節(jié)的算法實(shí)現(xiàn)。
CUDA通過(guò)核函數(shù)利用GPU資源進(jìn)行計(jì)算,而核函數(shù)只能讀取GPU內(nèi)存中的數(shù)據(jù),因此對(duì)于待處理數(shù)據(jù),必須先將其讀取到GPU內(nèi)存中。GPU有3種常用的不同類(lèi)型的內(nèi)存儲(chǔ)器:全局內(nèi)存(global memory)、本地內(nèi)存(local memory)、共享內(nèi)存(shared menory)。shared memory位于片內(nèi),讀取速度較快,另外2個(gè)為板載顯存。
這里一般使用cudaMallocHost和cudaMalloc語(yǔ)句分別在CPU和GPU的global memory中分配內(nèi)存,用cudaMemcpy語(yǔ)句進(jìn)行CPU與GPU的數(shù)據(jù)傳遞,比如:
float *h_data;
cudaMallocHost((void**)&h_data,1024* sizeof(float));
float *d_data;
cudaMalloc((void**)&d_data,1024*sizeof(float));
cudaMemcpy(d_data,h_data,1024*sizeof(float),cudaMemcpyHostToDevice);
除此之外,還可用cudaMallocPitch語(yǔ)句以二維對(duì)齊方式分配二維內(nèi)存。下文各個(gè)處理環(huán)節(jié),包括建立窗函數(shù)等過(guò)程都要用到這里的內(nèi)存分配方法。在CFAR處理中,還要用到shared memory加快處理速度。
脈沖壓縮有時(shí)域和頻域2類(lèi)實(shí)現(xiàn)方式。時(shí)域上利用有限脈沖響應(yīng)(FIR)濾波器實(shí)現(xiàn)時(shí)域脈沖壓縮,處理方法比較直觀(guān)。當(dāng)距離單元數(shù)較小時(shí),相對(duì)運(yùn)算量不大,采用時(shí)域脈壓處理可以滿(mǎn)足實(shí)時(shí)性要求[7]。但是當(dāng)距離單元數(shù)很大,時(shí)域卷積的運(yùn)算量很大,這時(shí)宜采用頻域脈沖壓縮方法[8]。
本文采用頻域脈壓處理方法,其算法實(shí)現(xiàn)如圖2所示。
圖2 基于GPU的脈沖壓縮算法
由于發(fā)射機(jī)的發(fā)射波數(shù)據(jù)和模式可以提前得到,所以提前計(jì)算出所有的脈壓系數(shù)(可以在計(jì)算時(shí)進(jìn)行加窗處理),組成脈壓系數(shù)庫(kù)(存放于dat文件中)。進(jìn)行脈沖壓縮時(shí),讀取預(yù)處理過(guò)的報(bào)文數(shù)據(jù)和模式標(biāo)志,從脈壓數(shù)據(jù)庫(kù)中選擇對(duì)應(yīng)的系數(shù)數(shù)據(jù),傳送到GPU內(nèi)存中,通過(guò)建立快速傅里葉變換(FFT) plan進(jìn)行頻域脈壓系數(shù)計(jì)算。讀取預(yù)處理過(guò)的回波數(shù)據(jù),同樣做FFT計(jì)算。然后將2個(gè)頻域數(shù)據(jù)相乘,得到脈壓的頻域結(jié)果,之后進(jìn)行快速傅里葉逆變換(IFFT)計(jì)算,得到脈沖壓縮結(jié)果。一維FFT plan建立方法如下:
cufftHandle plan;
cufftPlan1d(&plan,FFT_number1,CUFFT_C2C,1);
除了一維FFT之外還可以創(chuàng)建二維按行或者按列FFT(2種方法計(jì)算耗時(shí)不同)的plan,調(diào)用plan時(shí)通過(guò)CUFFT_FORWARD或者CUFFT_INVERSE來(lái)確定進(jìn)行FFT還是IFFT,需要注意的是,經(jīng)過(guò)2次N點(diǎn)變換之后的數(shù)據(jù)比原數(shù)據(jù)擴(kuò)大了N倍,如需輸出脈壓數(shù)據(jù),需乘以1/N。
本文采用非遞歸型對(duì)消器實(shí)現(xiàn)MTI過(guò)程,其中,一次對(duì)消器的一般結(jié)構(gòu)見(jiàn)圖3,其差分方程為:
yn=xn-xn-1
(1)
二次對(duì)消器的一般結(jié)構(gòu)見(jiàn)圖4,其差分方程為:
yn=xn-2xn-1+xn-2
(2)
圖3 一次對(duì)消器的一般結(jié)構(gòu)
圖4 二次對(duì)消器的一般結(jié)構(gòu)
而基于CUDA的算法實(shí)現(xiàn)過(guò)程為:將脈壓結(jié)果存儲(chǔ)為二維形式(可以使用cudaMallocPitch語(yǔ)句),設(shè)計(jì)核函數(shù)構(gòu)造一次、二次對(duì)消器等濾波器,調(diào)用核函數(shù)處理脈壓數(shù)據(jù)得到MTI結(jié)果并輸出。其算法過(guò)程如圖5所示。
圖5 基于 GPU 的 MTI 算法
為了提高M(jìn)TD的方位精度,本文采用滑動(dòng)MTD(SMTD)方法。在方位上每滑過(guò)一個(gè)脈沖,做一次M點(diǎn)(如16點(diǎn))的MTD,新進(jìn)入一個(gè)信號(hào),丟掉一個(gè)老信號(hào),又進(jìn)行一次M點(diǎn)的老信號(hào),因此每次MTD處理中均只有1個(gè)新信息,M-1個(gè)老信息。若一共有N個(gè)回波信息(脈沖壓縮之后),每M個(gè)信息做一次MTD,那么SMTD之后就剩下了N-M+1個(gè)信息。對(duì)于每次MTD過(guò)程,M個(gè)脈壓數(shù)據(jù)在相同距離門(mén)上(多普勒維度)進(jìn)行M點(diǎn)的加窗FFT,得到M個(gè)通道的MTD結(jié)果。得到結(jié)果后可以對(duì)這M個(gè)通道的數(shù)據(jù)取模并取大,為CFAR提供源數(shù)據(jù)。
圖6 基于GPU 的 SMTD 算法
圖6為基于GPU的SMTD算法實(shí)現(xiàn)示意圖,其中按行或按列進(jìn)行FFT可以按照如下語(yǔ)句建立plan:
cufftHandle plan;
int rank=1;
int n[rank]={SampleNumber};
int inembed[1]={0};
int onembed[1]={0};
int istride=1;
int idist=SampleNumberF;
int ostride=1;
int odist=SampleNumber;
int batch=PulseNumber;
cufftPlan(&plan,rank,n,inembed,istride,idist,onembed,ostride,odist,CUFFT_C2C,batch);
理國(guó)要道,在于公平正直。從黨的十八大提出“進(jìn)一步深化司法體制改革”,到黨的十九大要求“深化司法體制綜合配套改革”,以習(xí)近平同志為核心的黨中央從全面推進(jìn)依法治國(guó),實(shí)現(xiàn)國(guó)家治理體系和治理能力現(xiàn)代化的高度,擘畫(huà)司法體制改革宏偉藍(lán)圖,加快建設(shè)公正高效權(quán)威的社會(huì)主義司法制度。
CFAR檢測(cè)器有單元平均CFAR(CA-CFAR)、單元平均取大CFAR(GO-CFAR)、單元平均取小CFAR(SO-CFAR)等類(lèi)型,本文采用的是較為常見(jiàn)的CA-CFAR檢測(cè)器。
CA-CFAR 的自適應(yīng)門(mén)限值取決于雜波和目標(biāo)距離門(mén)附近的噪聲。待檢單元(CUT)兩邊的N個(gè)單元組成參考窗(CFAR window cells),對(duì)其回波信號(hào)進(jìn)行采樣,將待檢單元的輸出與由參考單元輸出總和所得到的自適應(yīng)門(mén)限相比較并進(jìn)行判決。一般將緊臨 CUT 的單元設(shè)為保護(hù)單元(Guard Cells),在計(jì)算門(mén)限值時(shí)不將其列入計(jì)算之中來(lái)減小誤差。CA-CFAR算法如圖7所示。
圖7 CA-CFAR算法
基于GPU實(shí)現(xiàn)CFAR過(guò)程,在代碼上是緊接著SMTD過(guò)程的。SMTD每得到1次MTD結(jié)果,取MTD結(jié)果的模值,將數(shù)據(jù)在距離門(mén)維度上取M個(gè)模的最大值,這樣每M組數(shù)據(jù)結(jié)果就得到了1組數(shù)據(jù),以此作為CFAR的源數(shù)據(jù)。
由于CFAR過(guò)程會(huì)頻繁訪(fǎng)問(wèn)同一回波數(shù)據(jù),2.1中提到的global memory訪(fǎng)問(wèn)速度較慢,計(jì)算效率較低,因此將待用數(shù)據(jù)寫(xiě)入到shared memory中,減小不必要的時(shí)間開(kāi)銷(xiāo),從而提高計(jì)算效率。在計(jì)算閾值時(shí),由于窗長(zhǎng)取值一般為 2 的冪次,故采用歸約求和算法,將求和過(guò)程變?yōu)槎鄬佣嗑€(xiàn)程并行求和[9]。CFAR過(guò)程可以從GPU的內(nèi)存特點(diǎn)和計(jì)算特性進(jìn)行優(yōu)化,此處不再展開(kāi)。本文的基于GPU的CFAR算法過(guò)程如圖8所示。
圖8 基于GPU的CFAR算法
某警戒雷達(dá)基于傳統(tǒng)CPU平臺(tái),其信號(hào)處理過(guò)程采用C++編程,通過(guò)調(diào)用Intel Math Kernel Library加快計(jì)算效率。本文對(duì)其與本文采用的基于GPU平臺(tái)的雷達(dá)信號(hào)處理進(jìn)行性能比較。
在 GPU 與 CPU 上分別實(shí)現(xiàn)雷達(dá)信號(hào)處理的脈沖壓縮、MTI、MTD和CFAR處理過(guò)程,源數(shù)據(jù)相同,計(jì)算兩者處理結(jié)果的誤差,同時(shí)對(duì)比兩者的計(jì)算時(shí)間,以分析 GPU 算法實(shí)現(xiàn)的準(zhǔn)確度和計(jì)算效率。CPU端使用Intel(R) Math Kernel Library(Version 2017.0.31)進(jìn)行計(jì)算。開(kāi)發(fā)計(jì)算機(jī)采用的顯卡 GPU 為 NVIDIA GeForce GTX1060,CPU 為Intel Core(TM)i5-8300H 2.30 GHz,操作系統(tǒng)為Deepin 15.11。
圖9 基于GPU的雷達(dá)信號(hào)處理仿真實(shí)驗(yàn)結(jié)果
圖9為同一仿真源數(shù)據(jù)GPU平臺(tái)的處理結(jié)果。
分析圖9可以得出結(jié)論,基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)在仿真實(shí)驗(yàn)中完成了脈沖壓縮、MTI、MTD任務(wù)。實(shí)驗(yàn)數(shù)據(jù)也表明CFAR檢測(cè)結(jié)果正確。之后將基于GPU的檢測(cè)結(jié)果與基于CPU的雷達(dá)信號(hào)處理計(jì)算結(jié)果進(jìn)行比較,以CPU計(jì)算結(jié)果為基準(zhǔn)(認(rèn)為是絕對(duì)真實(shí)值),繪制GPU平臺(tái)下脈沖壓縮、MTI、MTD的絕對(duì)誤差圖。
圖10 基于GPU與CPU的雷達(dá)信號(hào)處理仿真實(shí)驗(yàn)結(jié)果誤差
由圖10分析可知:基于GPU的處理結(jié)果與CPU相比誤差極小,脈壓絕對(duì)誤差小于5.5×10-5,MTI絕對(duì)誤差小于6×10-5,MTD絕對(duì)誤差小于5×10-4,而對(duì)于這3個(gè)過(guò)程來(lái)說(shuō),目標(biāo)或者說(shuō)是有用數(shù)據(jù)一般大于1,因此相對(duì)誤差最大不超過(guò)上述對(duì)應(yīng)數(shù)值。因此,基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)計(jì)算結(jié)果具有較高的準(zhǔn)確度。
分別進(jìn)行100次仿真實(shí)驗(yàn),記錄GPU和CPU處理實(shí)現(xiàn)各個(gè)功能的平均時(shí)間,得到結(jié)果如表1所示。
表1 基于GPU與CPU的信號(hào)處理仿真實(shí)驗(yàn)計(jì)算耗時(shí)
表1為2種平臺(tái)下實(shí)現(xiàn)信號(hào)處理的計(jì)算耗時(shí),顯然基于GPU的方法計(jì)算耗時(shí)要少得多,將CPU耗時(shí)除以GPU耗時(shí),繪制GPU算法相較于CPU算法的效率提升折線(xiàn)圖,如圖11所示。
圖11 基于GPU的算法對(duì)比CPU算法的計(jì)算性能提升率
圖11表明基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)相較傳統(tǒng)CPU平臺(tái)的處理方式在計(jì)算性能上有巨大的提升,尤其是MTD模塊更是達(dá)到了262倍的效率提升,總體的平均提升率也在100倍左右。而且因?yàn)楸疚淖龅氖欠抡鎸?shí)驗(yàn),數(shù)據(jù)量受限,實(shí)際應(yīng)用過(guò)程中的回波數(shù)量遠(yuǎn)遠(yuǎn)大于本次仿真的數(shù)據(jù)量,對(duì)于GPU的計(jì)算能力來(lái)說(shuō),仍有較大的提升空間。
本文闡述了基于GPU的軟件雷達(dá)信號(hào)處理系統(tǒng)的結(jié)構(gòu)以及各個(gè)信號(hào)處理模塊的實(shí)現(xiàn)原理,通過(guò)仿真實(shí)驗(yàn),對(duì)比了GPU平臺(tái)(CUDA架構(gòu))和CPU平臺(tái)(調(diào)用MKL庫(kù))下雷達(dá)信號(hào)處理的結(jié)果正確性、結(jié)果準(zhǔn)確度和計(jì)算性能。結(jié)果表明:GPU平臺(tái)下的雷達(dá)信號(hào)處理結(jié)果與CPU下的結(jié)果在數(shù)值上幾乎完全相同;而在計(jì)算耗時(shí)方面,GPU平臺(tái)下算法的計(jì)算效率是CPU平臺(tái)下的100倍左右,在某些信號(hào)處理環(huán)節(jié)上計(jì)算效率更高。由于仿真實(shí)驗(yàn)的條件受限,數(shù)據(jù)量較小,并沒(méi)有發(fā)揮出GPU的全部性能。實(shí)際應(yīng)用中待處理數(shù)據(jù)(如回波采樣點(diǎn)數(shù)、PRT數(shù)量)會(huì)更加龐大,利用GPU實(shí)現(xiàn)雷達(dá)信號(hào)處理將獲得更大的吞吐量。因此,GPU平臺(tái)下的雷達(dá)信號(hào)處理與傳統(tǒng)雷達(dá)采用的CPU相比,計(jì)算結(jié)果準(zhǔn)確,計(jì)算效率更高,更能滿(mǎn)足現(xiàn)代雷達(dá)信號(hào)處理的大吞吐量和高實(shí)時(shí)性要求。