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