楊千禾 袁子喬 扈月松
(西安電子工程研究所 西安 710100)
雜波抑制是雷達(dá)信號處理中一個(gè)非常重要的環(huán)節(jié)。對于固定雜波,通常會使用結(jié)構(gòu)簡單,運(yùn)算量較低的動(dòng)目標(biāo)顯示(Moving Target Indication,MTI)實(shí)現(xiàn)對雜波的抑制。不過在實(shí)際情況下,硬件工藝水平的參差不齊和雷達(dá)工作環(huán)境的復(fù)雜多樣都會導(dǎo)致雷達(dá)目標(biāo)回波出現(xiàn)起伏。這些現(xiàn)象將會影響MTI的雜波抑制效果,大部分的MTI對消器來說,其改善因子一般都被限制在20dB左右[1],此外MTI對消器對于云雜波和雨雜波等氣象雜波的無法起到有效的抑制效果。現(xiàn)代雷達(dá)系統(tǒng)通常使用動(dòng)目標(biāo)檢測(Moving Target Detection,MTD)來克服MTI的不足,MTD通過多個(gè)帶通濾波器組對雷達(dá)回波進(jìn)行脈沖多普勒處理[2],再通過對濾波器組的輸出數(shù)據(jù)進(jìn)行檢測,以致發(fā)現(xiàn)目標(biāo)。相對于MTI,MTD能改善濾波器的頻率特性,使之更接近于最佳線性濾波,可以將改善因子提高至42dB,能夠檢測強(qiáng)雜波信號中的弱目標(biāo)信號。
MTD濾波器組的實(shí)現(xiàn)方法一般分為兩類。第一類就是設(shè)計(jì)多階數(shù)的有限脈沖響應(yīng)(Finite Impulse Response,FIR)濾波器組來對脈沖壓縮之后的數(shù)據(jù)進(jìn)行濾波,這種方法能針對回波信號自適應(yīng)的在雜波頻率處形成零陷,但是計(jì)算量過大,對于實(shí)時(shí)的信號處理系統(tǒng)的硬件計(jì)算能力的要求過高。另外一種方法就是用快速傅里葉變換(Fast Fourier Transform,FFT)來實(shí)現(xiàn)濾波器組,在計(jì)算資源有限的情況下能較好地完成MTD任務(wù),但是需要更低副瓣的濾波器組來提升對于氣象雜波的抑制性能。更低副瓣會導(dǎo)致主瓣的展寬更加嚴(yán)重,可能導(dǎo)致主瓣發(fā)生明顯變形。
為了進(jìn)一步提升雷達(dá)系統(tǒng)的計(jì)算能力,同時(shí)降低后續(xù)程序調(diào)試難度,實(shí)現(xiàn)雷達(dá)軟硬件的解耦,增強(qiáng)雷達(dá)的可重構(gòu)性。使用圖形處理器(Graphics Processor Unit,GPU)代替DSP和FPGA作為雷達(dá)的計(jì)算核心,組成GPU+CPU的異構(gòu)平臺作為新型的雷達(dá)信號處理系統(tǒng)架構(gòu)。在使用GPU實(shí)現(xiàn)雷達(dá)信號處理過程中,MTD的優(yōu)化效果相較脈沖壓縮(Pulse Compression,PC)和恒虛警檢測(Constant False Alarm Rate,CFAR)有明顯的不足,本文將著力解決這些問題并實(shí)現(xiàn)MTD在GPU計(jì)算平臺上的進(jìn)一步優(yōu)化。
MTI的級聯(lián)FFT的MTD濾波器組是在FFT之前接一個(gè)二次對消器,它可以濾去最強(qiáng)的地物雜波,這樣就可以減少窄帶濾波器組所需要的動(dòng)態(tài)范圍,并降低對濾波器副瓣的要求。由于DFT是一種特殊的橫向?yàn)V波器,所以濾波器組的系數(shù)可以按照DFT的定義來選擇,并采用快速算法FFT來實(shí)現(xiàn)MTD。
FFT的每點(diǎn)輸出,相當(dāng)于N點(diǎn)數(shù)據(jù)在這個(gè)頻率上的積累,也可以說是以這個(gè)頻率為中心的一個(gè)帶通濾波器的輸出[3]。
根據(jù)DFT的定義,N組濾波器的權(quán)值為
wnk=e-j2πk/N,n=0,1,…,N-1;k=0,1,…,N-1
(1)
式(1)中,n表示第n個(gè)抽頭,k表示第k個(gè)濾波器,每一個(gè)k值決定一個(gè)獨(dú)立的濾波器相應(yīng),相應(yīng)地對應(yīng)于一個(gè)不同的多普勒濾波器響應(yīng)。因此,第k個(gè)濾波器的頻率響應(yīng)函數(shù)為
k=0,1,…,N-1
(2)
濾波器的幅頻特性為
(3)
每一個(gè)濾波器都有一定的副瓣,副瓣的大小決定著雜波抑制能力的大小。為了降低副瓣,通常在計(jì)算FFT之前,一般都需要使用一個(gè)窗函數(shù)w[k]對慢時(shí)間采樣數(shù)據(jù)進(jìn)行加權(quán)來降低旁瓣的影響,加權(quán)之后的N點(diǎn)FFT可表示為
(4)
此時(shí),第n個(gè)濾波器的幅頻響應(yīng)可表示為
(5)
用窗函數(shù)進(jìn)行加權(quán)的主要目的是減少濾波器旁瓣的相對幅度,使信號盡量從主瓣進(jìn)入,同時(shí)主瓣盡可能窄,使濾波器獲得較陡的過渡帶。一般來說,使用了非矩形窗對信號進(jìn)行加窗之后,達(dá)成對旁瓣抑制的同時(shí)也會導(dǎo)致主瓣寬度地增加。主瓣電平會減少,信噪比也會相應(yīng)地降低。因此要針對雷達(dá)信號體制和雜波的環(huán)境,選用合適的窗函數(shù)進(jìn)行加權(quán)處理。圖1為加海明窗之后的濾波器響應(yīng),可以看出在降低副瓣的同時(shí),主瓣有所展寬。
圖1 FFT濾波器組頻率特性
采用FIR濾波器對雜波進(jìn)行抑制,同時(shí)對目標(biāo)信號實(shí)現(xiàn)相參積累,這里的處理關(guān)鍵在于FIR雜波抑制濾波器的設(shè)計(jì),在設(shè)計(jì)FIR濾波器時(shí)需要根據(jù)雜波感知得到的雜波幅度、雜波譜寬來確定濾波器的凹口深淺及凹口寬度??紤]到FIR濾波器設(shè)計(jì)實(shí)時(shí)性可能無法滿足的問題,通過設(shè)置默認(rèn)的多種不同凹口深度和寬度的組合,提前優(yōu)化設(shè)計(jì)多組FIR濾波器,使用時(shí)只需根據(jù)凹口深度和寬度選擇相應(yīng)的濾波器系數(shù)即可。
點(diǎn)最佳多普勒濾波器組只在所需的多普勒處理頻段中的某一點(diǎn)上達(dá)到最佳,而在其他頻點(diǎn)都是不匹配的[3]。多普勒濾波器就是用許多濾波器填滿感興趣的多普勒區(qū)域。通常實(shí)際運(yùn)用中的多普勒濾波器采用N個(gè)橫向?yàn)V波器填滿多普勒區(qū)域,N等于處理的相干脈沖輸。
點(diǎn)多普勒橫向?yàn)V波器復(fù)數(shù)信號表示為
(6)
式(6)中A是幅度,wd是多普勒的角頻率,N是相參脈沖數(shù),Tr是雷達(dá)脈沖間的間距。信號適量則可表示為sT=(s1,s2,s3,…,sN),其中
sn=Aejwd(n-1)Trn=1,2,…,N
(7)
Rs為歸一化信號協(xié)方差矩陣,Rs=E(ss*T)
(8)
歸一化協(xié)方差的元素mskj為
mskl=ejwd(k-1)Te-jwi(j-1)T=ejwd(k-j)T;
k=1,2,..,n;j=1,2,…,n
(9)
式(9)中的k為行數(shù),j為列數(shù)。
根據(jù)自適應(yīng)濾波器原理,長度為N的濾波器中第k個(gè)濾波器的權(quán)適量為
wk=R-1a(fk)
(10)
式(10)中fk(k=1,2,...,N)為第k個(gè)濾波器的通帶中心頻率,a(fk)為導(dǎo)頻矢量,為
a(fk)=[1,ej2πfkTr,ej2πfk2Tr,…,ej2πfk(N-1)Tr]T
(11)
R=Rc+σ2I為雜波加噪聲協(xié)方差陣,RC為雜波協(xié)方差矩陣,I為單位矩陣,σ2為噪聲功率[3]。R-1的作用就是使濾波器自適應(yīng)地在雜波頻率處形成零陷,從而抑制雜波[3]。
圖2 64階點(diǎn)最佳多普勒濾波器組頻率特性
CPU和GPU是兩個(gè)相互獨(dú)立的處理器,有著不同的內(nèi)部架構(gòu)。CPU和GPU的組成如圖3所示。
圖3 CPU與GPU的內(nèi)部結(jié)構(gòu)
圖3中Control是控制器、ALU為算術(shù)邏輯單元、Cache是CPU內(nèi)部緩存、DRAM就是內(nèi)存。可以看到GPU設(shè)計(jì)者將更多的晶體管用作執(zhí)行單元,而不是像CPU結(jié)構(gòu)包含大量的控制單元與緩存[5]。從實(shí)際來看,CPU芯片空間的5%是ALU,而GPU則占到了40%。物理結(jié)構(gòu)上的差異導(dǎo)致GPU在面對大批次計(jì)算時(shí)的表現(xiàn)比CPU要更加優(yōu)秀。
對于控制密集型的任務(wù),特別是邏輯復(fù)雜、分支眾多或深度迭代的計(jì)算任務(wù),CPU處理效果要優(yōu)于GPU;而GPU更擅長處理易于并行化的計(jì)算密集型任務(wù)。在GPU+CPU的異構(gòu)計(jì)算平臺中,需要根據(jù)數(shù)據(jù)特性和算法特性對一整個(gè)項(xiàng)目進(jìn)行分解,再給CPU和GPU分配契合自身硬件特性與計(jì)算特性的任務(wù),這樣能有效提高大規(guī)模計(jì)算項(xiàng)目的性能。
GPU自身不具備獨(dú)立處理進(jìn)程的能力,要實(shí)現(xiàn)GPU的并行計(jì)算必須通過PCI-E總線與CPU相連,組成異構(gòu)計(jì)算平臺才能完成對任務(wù)的處理。因?yàn)橐话愣际怯蒀PU向GPU傳輸待計(jì)算的數(shù)據(jù)并發(fā)布計(jì)算任務(wù),所以稱CPU所在位置為主機(jī)端(Host),稱GPU所在位置是設(shè)備端(Device)。
程序的啟動(dòng)和初始化都在主機(jī)端完成,待計(jì)算數(shù)據(jù)是由CPU先處理加載到主機(jī)端內(nèi)存中。在這一階段,會完成通信端口的建立,主機(jī)內(nèi)存的開辟,數(shù)據(jù)的接收/加載、組包和重排,完成數(shù)據(jù)計(jì)算前的所有準(zhǔn)備。在主機(jī)端的準(zhǔn)備完成之后,設(shè)備端也要在顯存中(顯卡的內(nèi)存)中開辟相應(yīng)的數(shù)據(jù)空間,完成對數(shù)據(jù)的接收準(zhǔn)備。圖4為GPU+CPU架構(gòu)的基本工作原理,這種架構(gòu)可以充分揮GPU的高速并行計(jì)算能力,同時(shí)兼顧C(jī)PU在邏輯運(yùn)算、流程管理方面的能力,通過合理的任務(wù)分配,實(shí)現(xiàn)系統(tǒng)的高性能擇優(yōu)。
圖4 CPU+GPU協(xié)同工作方式
在實(shí)際的計(jì)算中, R-D平面矩陣在設(shè)備的存儲器中被轉(zhuǎn)化成一維的向量,所有的計(jì)算都是直接針對這個(gè)一維向量進(jìn)行操作。所以為了達(dá)成較好的計(jì)算性能并得到正確的計(jì)算結(jié)果,在計(jì)算前需要根據(jù)數(shù)據(jù)的存儲格式和數(shù)據(jù)的讀取方式來判斷對是否需要對輸入結(jié)果進(jìn)行轉(zhuǎn)置。一般情況下,PC之后的距離點(diǎn)數(shù)都較大,在CPU上實(shí)現(xiàn)矩陣轉(zhuǎn)置耗費(fèi)的時(shí)間較長并會占用大量的計(jì)算資源。
在GPU上實(shí)現(xiàn)MTD算法時(shí),可以通過CUDA程序的函數(shù)和異構(gòu)計(jì)算平臺主機(jī)端與設(shè)備端分別初始化的特點(diǎn),將一些步驟同時(shí)進(jìn)行甚至省略,如圖5所示。
圖5 基于GPU的MTD算法
圖中較深陰影部分可以在整個(gè)程序的初始化或者是在主存向顯存?zhèn)鬏敂?shù)據(jù)時(shí)獨(dú)立完成,可以理解為HOST與DEVICE并行處理,隱藏消耗時(shí)間;圖中無文字部分為省略部分,沒有計(jì)算操作,并不消耗時(shí)間;淺陰影部分則是消耗計(jì)算資源的部分,也是本文優(yōu)化MTD過程的重點(diǎn)。
在GPU上對數(shù)據(jù)進(jìn)行點(diǎn)乘和求模,需要使用自編的核函數(shù)來實(shí)現(xiàn)并行運(yùn)算。GPU的計(jì)算核心在核函數(shù)內(nèi)規(guī)劃時(shí)是抽象成了thread,block和grid三級,thread作為最基本的計(jì)算單元包含于block中,多個(gè)thread組成的block在組成grid。在核函數(shù)中,向量的單元數(shù)據(jù)被分配給啟動(dòng)的thread。因?yàn)樵谇竽:忘c(diǎn)乘的計(jì)算過程中,相鄰單元直接互不影響計(jì)算結(jié)果,所以可以實(shí)現(xiàn)多線程并行計(jì)算。常用的多線程并行計(jì)算的情況如圖6所示。
圖6 常用多線程并行情況示例
相對于計(jì)算數(shù)據(jù)的規(guī)模可能無限增大,GPU的計(jì)算核心卻是固定的,無法實(shí)現(xiàn)單個(gè)thread僅處理一個(gè)待計(jì)算單位理想情景。在數(shù)據(jù)規(guī)模較大的情況下,一個(gè)thread處理多個(gè)待計(jì)算單位時(shí),圖6的線程分配方法將會造成線程阻塞。為了避免thread阻塞,提高數(shù)據(jù)讀取和計(jì)算的效率,應(yīng)該使用如圖7所示線程讀取方式。
圖7 防止線程堵塞的數(shù)據(jù)讀取方式
CUDA的CUFFT庫函數(shù)提供了一種高效優(yōu)化的快速傅里葉變換,可以用來實(shí)現(xiàn)MTI級聯(lián)FFT的濾波器組。CUFFT的配置使用句柄(Plan)來實(shí)現(xiàn),該句柄初始化定義了包括待變換信號的長度,數(shù)據(jù)類型,在內(nèi)存中的存儲形式等信息。使用句柄來進(jìn)行初始化的方式為
cufftPlanMany(&cufftHandleplanname,
rank,n,inembed,istride,idist,
onembed,ostride,odist,CUFFT_C2C,batch)
rank表示每個(gè)進(jìn)行FFT運(yùn)算的信號的維度;n是一個(gè)數(shù)組,表示進(jìn)行FFT的每個(gè)信號的行數(shù),列數(shù)和頁數(shù)值上一個(gè)參數(shù)rank相互呼應(yīng);inembed表示輸入數(shù)據(jù)的三維點(diǎn)數(shù),[頁數(shù),列數(shù),行數(shù)]、[列數(shù),行數(shù)]或[行數(shù)],若數(shù)據(jù)是一維數(shù)據(jù)這個(gè)參數(shù)會被忽略;istride表示每個(gè)輸入信號的相鄰兩個(gè)原始直接的距離;idist為兩個(gè)連續(xù)輸入信號的起始元素之間的間隔;onembed為輸出數(shù)據(jù)的情況,同inembed;ostride和odist與此同理,最后batch為進(jìn)行FFT運(yùn)算的信號個(gè)數(shù)。
傳輸?shù)皆O(shè)備端的數(shù)據(jù)都是按照列優(yōu)先的存儲規(guī)則來排布數(shù)據(jù),可以通過改變參數(shù)istride與idist,或者ostride和odist來改變FFT的輸入輸出數(shù)據(jù)的格式,如圖8所示。通過句柄初始化直接根據(jù)需求對數(shù)據(jù)進(jìn)行再次排序,在初始的過程中實(shí)現(xiàn)矩陣轉(zhuǎn)置,這一手段可以有效地優(yōu)化MTD的運(yùn)算時(shí)間。
圖8 FFT句柄初始化改變數(shù)據(jù)的排布格式
在完成對數(shù)據(jù)的初始化之后,調(diào)用CUFFT執(zhí)行函數(shù)即可。
cufftExecC2C(planname,datain,dataout,
CUFFT_FORWARD)
其中四個(gè)函數(shù)結(jié)構(gòu)分別對應(yīng)之前初始化的句柄,輸入輸出數(shù)據(jù)的指針和FFT運(yùn)算的方向。CUFFT_FORWARD是FFT運(yùn)算,CUFFT_INVERSE是IFFT運(yùn)算。
在前文已經(jīng)分析過,使用FIR濾波器組實(shí)現(xiàn)MTD能夠針對不同的回波信號,使濾波器自適應(yīng)地在雜波頻率出形成零陷,從而靈活地抑制回波信號中的雜波。但是這種MTD算法的實(shí)現(xiàn)卻對硬件有著巨大的壓力,算法實(shí)現(xiàn)過程如圖9所示。
圖9 FIR濾波器組實(shí)現(xiàn)MTD
CUBALS庫對于這種規(guī)模較大的矩陣向量運(yùn)算有著良好的加速效果,對于復(fù)數(shù)矩陣相乘C=alpha*A*B+beta*C有如函數(shù)
cublasCgemm(handle,transa,transb,
m,n,k,alpha,A,lda,ldb,beta,C,ldc)
transa和transb是表示矩陣A、B是否需要在計(jì)算前進(jìn)行轉(zhuǎn)置;m,n,k就是計(jì)算矩陣的維度信息;lda,ldb,ldc是對應(yīng)矩陣的主維度。
出于整個(gè)系統(tǒng)兼容性的考慮,CUBLAS也選擇使用列優(yōu)先的存儲方式。如果在計(jì)算之前對矩陣做了轉(zhuǎn)置,那么矩陣的主維度就是矩陣的列數(shù),此時(shí)的矩陣是按照C/C++以行優(yōu)先的方式來存儲的;反之矩陣的主維度就是行數(shù),保持了列有限的存儲方式。但是不論在計(jì)算之前是否對矩陣進(jìn)行轉(zhuǎn)置操作,都只是改變了矩陣數(shù)據(jù)排列格式,結(jié)果矩陣C永遠(yuǎn)都是按照列優(yōu)先存儲方式,因此要獲得符合主機(jī)端矩陣排布的MTD結(jié)果,就需要對參與計(jì)算的矩陣進(jìn)行轉(zhuǎn)置,得到行優(yōu)先的CT。如果后續(xù)的CFAR和雜波圖計(jì)算仍然是在GPU是進(jìn)行實(shí)現(xiàn),則不需要此操作。表1總結(jié)了兩種情況下的參數(shù)設(shè)置規(guī)則,這是使用CUBLAS庫的關(guān)鍵。
表1 不同數(shù)據(jù)排布結(jié)果的參數(shù)選擇
在CPU+GPU異構(gòu)平臺上對信號處理中的MTD算法進(jìn)行設(shè)計(jì),硬件使用兩塊6U-VPX板卡,其中一塊使用至強(qiáng)E5-2648L V4的14核CPU為主處理器,用于處理流程的控制和資源的調(diào)度;另一塊板卡為Tesla P6 GPU,其單精度浮點(diǎn)計(jì)算能力為6.1Tflops,傳輸帶寬為192 GB/s。
使用上述計(jì)算平臺實(shí)現(xiàn)某雷達(dá)的信號處理。該雷達(dá)測試數(shù)據(jù)包含5個(gè)波束(含一個(gè)匿影波束),積累點(diǎn)數(shù)為32點(diǎn),有效距離單元是800(對脈沖壓縮結(jié)果截取后產(chǎn)生)。將模擬產(chǎn)生的信號處理數(shù)據(jù)在GPU上運(yùn)行100次之后取平均耗時(shí),并在CPU上分別實(shí)現(xiàn)FFT的MTD和FIR的MTD,記錄下耗費(fèi)時(shí)間,所得加速比如表2所示。
表2 MTD實(shí)現(xiàn)算法(開啟加速選項(xiàng))
將GPU計(jì)算的MTD結(jié)果導(dǎo)出,與經(jīng)過MatLab計(jì)算的結(jié)果進(jìn)行比對,MTD結(jié)果誤差結(jié)果如圖10所示。需要注意的是在經(jīng)過2次N點(diǎn)FFT之后的數(shù)據(jù)比原數(shù)據(jù)擴(kuò)大了N倍,對結(jié)果進(jìn)行誤差分析時(shí)需要將擴(kuò)大的倍數(shù)考慮在內(nèi)。最終求模輸出的MTD結(jié)果誤差在0.05%以內(nèi),考慮到在GPU上計(jì)算的數(shù)據(jù)類型為單精度(float)型,而MatLab默認(rèn)的顯示數(shù)據(jù)類型為雙精度(double),在進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)會對結(jié)果產(chǎn)生微小的影響,因此這個(gè)級別的誤差基本不會影響后續(xù)的雜波圖建立和恒虛警檢測。
圖10 MTD結(jié)果誤差
可以看到使用FIR濾波器組的MTD性能要比使用FFT的MTD提升了42.4%,原本最費(fèi)時(shí)的FIR濾波器組在GPU計(jì)算平臺上實(shí)現(xiàn)了性能的超越。
GPU的結(jié)構(gòu)特性利于完成大規(guī)模的矩陣運(yùn)算,針對數(shù)據(jù)讀取的優(yōu)化與高速庫函數(shù)的調(diào)用進(jìn)一步提升了濾波器組的計(jì)算速度。FIR濾波器組能夠讓雷達(dá)系統(tǒng)自適應(yīng)的對雜波產(chǎn)生抑制,增強(qiáng)了系統(tǒng)的靈活性;但是這樣設(shè)計(jì)的得到的自適應(yīng)的MTD濾波器會有較高的旁瓣電平,雖然不會造成主瓣的過度展寬以致主瓣變形,卻會造成不同濾波器之間的目標(biāo)相互影響,帶來虛警。FFT的MTD對于氣象雜波的抑制效果不佳,需要使用更低副瓣的濾波器組;但是加窗獲得了更低的副瓣電平卻造成了主瓣的進(jìn)一步展寬。
不過經(jīng)過優(yōu)化過后的兩種MTD方法耗時(shí)差異較小,經(jīng)過論證分析,已在某雷達(dá)的信號處理程序中都進(jìn)行了實(shí)現(xiàn),根據(jù)具體情況選取更加合適的MTD方法。
在GPU高性能計(jì)算中,核函數(shù)與庫函數(shù)的啟用、初始化和計(jì)算數(shù)據(jù)的導(dǎo)入在整個(gè)計(jì)算過程中占據(jù)的時(shí)間花銷不能忽視。所以在使用GPU進(jìn)行高性能計(jì)算時(shí),為了達(dá)到最優(yōu)的計(jì)算速度,整個(gè)應(yīng)用的結(jié)構(gòu)和數(shù)據(jù)的傳輸要根據(jù)實(shí)際情況作出相對應(yīng)的調(diào)整。計(jì)算數(shù)據(jù)規(guī)模的線性增加不一定導(dǎo)致計(jì)算時(shí)間的線性增加,所以我們將使用固定的總計(jì)算量,不同的循環(huán)次數(shù)和啟動(dòng)函數(shù)次數(shù)來測試MTD的計(jì)算時(shí)間。為了避免開啟加速優(yōu)化項(xiàng)對多次測試的影響,在未加速情況下計(jì)算128點(diǎn)積累,R-D平面總數(shù)據(jù)量為128×100000個(gè)復(fù)數(shù)的FIR濾波過程,分別才去多段計(jì)算和一批次計(jì)算的方法,測試時(shí)間如表3所示。
表3 各種情況下的FIR濾波器組計(jì)算時(shí)間(未開啟加速選項(xiàng))
從得出結(jié)果的后三項(xiàng)可以看出,并不是每次計(jì)算的矩陣維度小就一定能節(jié)省每次的運(yùn)算時(shí)間,單次函數(shù)啟動(dòng)和數(shù)據(jù)導(dǎo)入的開銷據(jù)決定著要選則合適的數(shù)據(jù)維度才能達(dá)到最好的計(jì)算優(yōu)化;其次每次計(jì)算的數(shù)據(jù)維度越大,在計(jì)算的總耗時(shí)上就會有提升。所以在信號處理過程中,在不造成系統(tǒng)其它分系統(tǒng)阻塞或者使計(jì)算資源發(fā)生空閑的情況下,盡量在GPU計(jì)算前堆積足夠大量的數(shù)據(jù),單次直接計(jì)算大量數(shù)據(jù),減少函數(shù)啟動(dòng)的次數(shù),優(yōu)化整體計(jì)算的時(shí)間。
本文從實(shí)現(xiàn)MTD的兩種方法入手,分析了FIR濾波器組和FFT計(jì)算實(shí)現(xiàn)MTD的優(yōu)缺點(diǎn)。針對在較大數(shù)據(jù)情況下,使用FIR濾波器組實(shí)現(xiàn)MTD會導(dǎo)致計(jì)算資源的緊張和影響系統(tǒng)實(shí)時(shí)性的問題,提出了使用CPU+GPU異構(gòu)架構(gòu)來完成計(jì)算過程優(yōu)化的方式。結(jié)果表明在GPU上實(shí)現(xiàn)MTD算法的處理結(jié)果與在CPU上所得結(jié)果誤差在0.05%內(nèi)。經(jīng)過算法優(yōu)化和GPU加速選項(xiàng)優(yōu)化之后,MTI級聯(lián)FFT的濾波器組在GPU上的計(jì)算效率相比在CPU上的串行計(jì)算提高了近32.64倍,而本身以運(yùn)算量較大的FIR濾波器組算法相比CPU提高了近254.58倍。
FIR濾波器組能夠?qū)崿F(xiàn)自適應(yīng)的雜波抑制,增加了系統(tǒng)的靈活性,但副瓣較高;FFT濾波器組具有更低的副瓣電平,卻因?yàn)榧哟耙种齐娖皆斐芍靼甑倪M(jìn)一步展寬。在經(jīng)過優(yōu)化之后,兩種MTD在GPU上的計(jì)算耗時(shí)來到了同一個(gè)水平。所以在以GPU為核心的雷達(dá)信號處理平臺中,可以根據(jù)具體需求擇優(yōu)選擇兩種MTD實(shí)現(xiàn)方法。最后對于CUBALS庫在雷達(dá)信號處理過程中的進(jìn)一步優(yōu)化,提出了單次計(jì)算大量數(shù)據(jù),減少函數(shù)啟動(dòng)次數(shù)的建議。