張曉洋 張開生 張 軍
(西安電子工程研究所 西安 710100)
近年來,伴隨著圖形處理器(Graphic Processing Unit, GPU)的快速發(fā)展,GPU已經(jīng)成為具備強大并行化能力的多核處理器。傳統(tǒng)雷達信號實時處理架構(gòu)主要通過FPGA(Field-Programmable Gate Array)與DSP (Digital Signal Processing)來實現(xiàn),而單片DSP的算力已無法滿足實時雷達成像算法的性能需求。因此在實際應(yīng)用中多需要通過多片DSP聯(lián)合對數(shù)據(jù)進行處理。該做法往往無法適應(yīng)機載雷達等對功耗、尺寸有高限制的應(yīng)用場景。而利用GPU對雷達成像信號處理進行軟件化實現(xiàn),不僅能夠提升信號處理速度,同時軟件化信號處理也將便于系統(tǒng)開發(fā)與維護。NVIDIA于2006年推出的基于GPU的通用并行計算架構(gòu)(Compute Unified Device Architecture,CUDA)為開發(fā)人員對GPU硬件的使用提供了便利。
目前,研究人員對雷達成像算法的GPU 并行優(yōu)化開展了大量研究。文獻[2]在Arm Mali-T860 GPU平臺上對雷達成像算法中的多視處理、旋轉(zhuǎn)放縮和圖像量化算法進行了并行優(yōu)化設(shè)計。文獻[3]對常用機載頻域成像進行了并行化分析與實現(xiàn)。文獻[4]對基于CS(Chirp scaling)原理的兩步去斜成像算法進行了嵌入式GPU實現(xiàn)的研究。對于雷達成像過程中因平臺運動誤差所造成的雷達成像散焦情況,在利用慣導(dǎo)數(shù)據(jù)進行粗補償?shù)耐瑫r,通常采用基于回波信號的自聚焦算法實現(xiàn)精補償。該算法中大量快速傅里葉變換、轉(zhuǎn)置、向量點乘等運算均適合利用GPU的多核結(jié)構(gòu)來實現(xiàn)高性能并行處理。文獻[5]對基于Tesla C2050顯卡平臺的傳統(tǒng)相位自聚焦算法進行了并行化分析與實現(xiàn),文獻[8]所提加權(quán)極大似然PGA(Weighted Maximum Likelihood PGA,WML-PGA)算法能夠相比于文獻[5]所用傳統(tǒng)PGA算法提升了相位梯度估計的精度,同時Tesla C2050顯卡對于機載平臺的使用尺寸、功耗均不能滿足要求,故本文提出基于嵌入式GPU平臺Tx2對加權(quán)PGA算法進行了并行化分析與實現(xiàn),并通過實驗對本文所提技術(shù)的性能同TMS320C6678平臺進行了對比實驗。
相位梯度自聚焦是應(yīng)用廣泛的一種相位補償方法,該算法利用圖像的自聚焦性,不依賴于模型。假設(shè)同一距離單元內(nèi)的相位誤差是不隨時間變化的,通過估計不同距離單元的相位誤差梯度估計相位誤差,同時利用同一距離單元內(nèi)的相干積累減少噪聲對相位誤差梯度估計的影響。該算法基于圖像中某些特定點的散焦狀況進行自聚焦處理的,從而使整個圖像因相位誤差造成的散焦情況得到改善。而WML-PGA在此基礎(chǔ)上通過對不同距離單元的平坦度進行加權(quán)計算,提升相干積累時平坦度高的距離向影響力,從而提升相位誤差估計精度與收斂速度,該算法具體實現(xiàn)步驟如下所述。
雷達成像算法中可以證明方位向信號的頻率隨著時間呈現(xiàn)線性變化,其中方位向信號斜率、二次相位分別為
(1)
(2)
在相位梯度估計之前對信號進行方位去斜,用來去除信號的二次調(diào)頻分量。
為了便于工程實現(xiàn),PGA算法將整個方位向滑動分為個長度的子孔徑波束,其中各個子孔徑之間滑動重疊2的位置,這樣的做法可以避免相位誤差估計時各子孔徑所估計的相位之間出現(xiàn)跳變所導(dǎo)致的成像算法在方位脈壓時的性能惡化。同時為了提升相位梯度估計時的信雜比,在選擇出子孔徑樣本后通過對各個子孔徑中各距離向能量計算篩選出前能量最高的距離向單元。此步驟的子孔徑分割示意圖如圖1所示。
圖1 WML-PGA子孔徑分割示意圖
對選擇出的×個距離向長度為的距離向單元補償初始相位后計算頻譜最強幅度點索引,并將其循環(huán)移位至0頻位置,從而避免最強幅度點相位對相位誤差梯度估計的影響。
通過對循環(huán)移位后的信號進行加窗置0,實現(xiàn)對雜波能量的濾除,提升信號的信雜比。
同傳統(tǒng)PGA不同的是,WML-PGA為了進一步提升相位梯度估計的準確性,通過對不同距離向的平坦度權(quán)值進行計算,在同一距離單元內(nèi)相干積累時,平坦度權(quán)值高的樣本將提升其在相干積累時候的影響,平坦度權(quán)值低的樣本將減少其在相干積累的影響。該權(quán)值的引入有效提升相位誤差估計的收斂速度與精度。
(3)
(4)
該步驟利用了傅里葉變換的導(dǎo)數(shù)特性,即當()和()是一對傅里葉變換,表示為{()}=(),則如式(5)所示。
(5)
在估計出相位誤差梯度后,對其進行積分便能夠得到相位誤差,并通過擬合濾除其中線性相位。
對以上步驟進行迭代,縮小步驟1.4所加窗的大小直至相位估計收斂。
考慮到機載雷達成像系統(tǒng)對于系統(tǒng)功耗、尺寸、運算能力的要求,本文所選平臺為NVIDIA嵌入式Jetson TX2平臺。該平臺擁有6個CPU核心和一個GPU。其中CPU包括四核ARM Cortex-A57和雙核Denver2處理器,通過對6個CPU不同規(guī)模的使用,最大限度的滿足不同場景下對嵌入式芯片的性能與功耗平衡,能夠?qū)崿F(xiàn)最低功耗7.5 W。該平臺中GPU具有256個CUDA核心,DDR3內(nèi)存達到8 GB。
當利用GPU進行運算的并行化時,往往需要將數(shù)據(jù)從CPU端通過PCIE發(fā)送至GPU內(nèi)存當中,該操作不僅需要在CPU與GPU兩端同時開辟內(nèi)存,同時數(shù)據(jù)的傳輸速率將受到PCIE速率的限制。因此會帶來內(nèi)存與性能的雙重消耗。本文針對WML-PGA算法實現(xiàn)過程中大規(guī)模數(shù)據(jù)的調(diào)用,基于TX2的CPU與GPU內(nèi)存共享的特性,采用zero-copy技術(shù),通過頁鎖定內(nèi)存的HostAlloc分配方式達到規(guī)避數(shù)據(jù)拷貝的同時節(jié)省了內(nèi)存。同時因為TX2的CPU與GPU內(nèi)存共享的特性避免了數(shù)據(jù)的傳輸所帶來的系統(tǒng)耗時。打破了GPU開發(fā)過程中PCIE速率對系統(tǒng)性能的限制。
PGA算法中需要完成多距離單元與多子孔徑個數(shù)的信號傅里葉變換,多次調(diào)用傅里葉變換的操作可以通過調(diào)用cuFFT庫中的cufftPlanMany實現(xiàn)多個信號的傅里葉變換并行化運算。同時針對在計算均值時多向量點乘累加求和的計算需求,調(diào)用cuBlas庫中的矩陣乘法函數(shù)cublasCgemm實現(xiàn)矩陣點乘累加求和的并行加速。
由WML-PGA算法原理可知樣本選擇會將雷達成像方位向數(shù)據(jù)分為個子孔徑,同時根據(jù)各子孔徑距離向能量大小選出能量前的距離向,具體子孔徑分割示意如圖1所示??紤]到該算法在樣本選擇后的運算均是以子孔徑為運算單元,因此WML-PGA算法的并行化首先考慮利用在樣本選擇后實行各子孔徑的粗并行,即在GPU中調(diào)用多線程對WML-PGA算法樣本選擇后的運算以多子孔徑為并行運算。
對于樣本選擇后的運算,在子孔徑中多次用到:多復(fù)數(shù)向量的點乘運算、轉(zhuǎn)置、矩陣各行最大值索引、多信號方差、均值等運算操作。這些大規(guī)模數(shù)據(jù)運算將通過借助共享內(nèi)存、多線程等手段對子孔徑內(nèi)運算進行細并行化。由上WML-PGA算法步驟1.3中系統(tǒng)需要完成×次長度為子孔徑的頻譜最大值索引位置計算。因此可以將該運算等價為行長度為×列長度為的矩陣各行最大值索引值的計算。
考慮到GPU的共享內(nèi)存訪問速度相比全局內(nèi)存要快的多,開始作者提出利用共享內(nèi)存加規(guī)約算法實現(xiàn)矩陣最大值索引的并行加速,具體做法為:將單個長度為的向量傳進共享內(nèi)存中,并設(shè)塊中線程數(shù)為,共計×個線程塊,借助同一塊中的線程能夠?qū)崿F(xiàn)共享內(nèi)存之間的通信這一特性,利用規(guī)約算法計算對長度為的向量最大值索引。但該做法受到以下三點約束:當PGA算法中的過大時,無法將長度為的數(shù)據(jù)全部導(dǎo)入共享內(nèi)存當中;Tx2硬件限制了單個塊中的線程總數(shù)無法超過1024,當大于1024時,單個塊中的線程數(shù)將無法滿足規(guī)約計算的使用;規(guī)約運算時,隨著每次迭代,將會使相比于上次迭代中線程量一半的線程閑置,造成函數(shù)并行化效率不高?;谝陨先c,本文提出將共享內(nèi)存大小固定為32,將單個塊的線程數(shù)設(shè)為32,具體線程分配示意如圖2所示,同時只將各數(shù)據(jù)的前32個點存入共享內(nèi)存當中,之后調(diào)用塊中所有線程將存入共享內(nèi)存的數(shù)據(jù)同未存入的數(shù)據(jù)進行比對,最終將長度為的數(shù)據(jù)中最大的32個數(shù)據(jù)與索引位置存入共享內(nèi)存中,接下來再利用規(guī)約算法,在剩余的32個數(shù)據(jù)中迭代算出最大值與其索引位置。該做法使得函數(shù)不會受到子孔徑數(shù)據(jù)長度的限制,同時單個線程進行了多次運算,減少了線程的浪費,提升了函數(shù)實現(xiàn)的效率。
圖2 矩陣各行最大值索引運算線程分配示意圖
因PGA算法中涉及多次傅里葉變換,針對Tx2與TMS320C6678兩種不同平臺上較大數(shù)據(jù)量的多信號傅里葉變換性能進行了實驗統(tǒng)計。同時為了驗證本文所提利用HostAlloc進行GPU內(nèi)存分配避免內(nèi)存搬移開銷的可行性,對cudaMalloc、HostAlloc兩種不同GPU內(nèi)存分配方式下cufft庫函數(shù)的耗時,以及在cudaMalloc分配方式時利用cuMemcpy進行內(nèi)存搬移時的耗時進行了實驗統(tǒng)計。其中為傅里葉變換的長度;為傅里葉變換的個數(shù)。即當=64,=64時,代表本次實驗是同時實現(xiàn)64次64點FFT運算。
Tx2平臺單次實驗統(tǒng)計十萬次后取平均耗時如表1所示。
表1 Tx2平臺cufft性能統(tǒng)計
TMS320C6678的8核FFT性能統(tǒng)計如表2所示。
表2 DSP 6678的FFT性能統(tǒng)計
通過實驗發(fā)現(xiàn)GPU在實現(xiàn)傅里葉變換時,加速比隨著數(shù)據(jù)量的提升而增長。由表1可知,Tx2在實現(xiàn)8192×8192的FFT運算耗時40 ms,而6678在8192×8192的耗時為230 ms,加速比5.75。同時針對Tx2的CPU與GPU內(nèi)存搬移函數(shù)耗時統(tǒng)計可以看出,當從CPU內(nèi)存搬移8192×8192的數(shù)據(jù)至GPU內(nèi)存當中,共計耗時約205 ms,而本文所提利用Tx2的HostAlloc內(nèi)存共享特性避免了CPU與GPU內(nèi)存之間的交換耗時,并且由圖3可以看出HostAlloc與cuMalloc兩種不同內(nèi)存分配方式之間的運算耗時并無差異,證明了利用zero Copy避免數(shù)據(jù)搬移的開銷同時未影響GPU處理的性能。
圖3 Tx2、TMS320C6678的FFT性能比較
利用GPU對PGA算法進行并行化加速,首先對本文所提技術(shù)的準確性同Matlab結(jié)果進行了比對,由下兩幅圖可知,本文所提技術(shù)實現(xiàn)了同Matlab估計結(jié)果10×10級別的估計誤差,可以證明本文所提技術(shù)同Matlab實現(xiàn)的一致性。
圖4 GPU與Matlab相位誤差估計對比
圖5 GPU與Matlab相位自聚焦估計誤差
在對其準確性驗證后,將本文所提技術(shù)同基于八核DSP 6678的PGA性能進行對比實驗。分別對數(shù)據(jù)尺寸為8k×8k、8k×16k、8k×32k進行了性能對比實驗。單組數(shù)據(jù)一萬次運算統(tǒng)計取平均得到如表3所示。可以看出Tx2平臺對PGA算法在數(shù)據(jù)尺寸為8k×32k時的加速比達到了4.82,同時可以發(fā)現(xiàn)當處理數(shù)據(jù)規(guī)模越大時,加速比越明顯。證明本文所提技術(shù)相比于傳統(tǒng)DSP平臺的性能優(yōu)勢明顯。
表3 Tx2、TMS320C6678的PGA處理時間統(tǒng)計
基于GPU的信號處理在近些年已經(jīng)成為趨勢,利用GPU的并行化處理將更好提升雷達成像算法處理的實時性。本文所提技術(shù)通過對比實驗證明相比于傳統(tǒng)TMS320C6678平臺而言,最大加速比達到了4.82。同時Tx2功耗與TMS320C6678功耗均在8W左右。本文所提技術(shù)對雷達成像算法在嵌入式GPU平臺的應(yīng)用奠定了基礎(chǔ)。
但受限于WML-PGA算法中運算步驟過多,所提技術(shù)更多基于數(shù)據(jù)的粗并行實現(xiàn),該算法并行化加速仍然有很大的性能提升空間。同時Tx2平臺的內(nèi)存及性能均有提升空間,隨著硬件的發(fā)展,更高性能的硬件投入使用后,本文所提技術(shù)性能將進一步提升。