王占廣 羅忠濤 李 軍 孫 穎
(電子科技大學(xué) 成都 611731)
MIMO雷達(dá)作為一種新的雷達(dá)體制,近年來受到了國(guó)內(nèi)外的廣泛關(guān)注[1]。MIMO雷達(dá)發(fā)射正交或部分相關(guān)信號(hào),形成寬波束,在抗信號(hào)截獲、檢測(cè)弱目標(biāo)能力以及速度分辨力等性能上更有優(yōu)勢(shì)[2],但同時(shí)使MIMO雷達(dá)的運(yùn)算數(shù)據(jù)量成倍增加。在下視探測(cè)目標(biāo)時(shí),機(jī)載雷達(dá)的回波復(fù)雜[3],文獻(xiàn)[4]中機(jī)載雷達(dá)雜波模型具有通用性和實(shí)用價(jià)值。借鑒該模型,我們建立機(jī)載MIMO雷達(dá)的雜波模型。由于MIMO雷達(dá)系統(tǒng)和機(jī)載雜波的固有特性,該模型的運(yùn)算量龐大不可避免,對(duì)平臺(tái)硬件要求高,需要運(yùn)行較長(zhǎng)時(shí)間。
圖形處理器(Graphic Processing Unit,GPU)以其先進(jìn)的多核結(jié)構(gòu)和強(qiáng)大的浮點(diǎn)計(jì)算能力為并行通用計(jì)算提供了很具發(fā)展前景的新型運(yùn)算平臺(tái)[5]。與CPU相比,GPU用于通用計(jì)算的性能高,成本低,內(nèi)存和帶寬資源大。CUDA(Compute Unified Device Architecture)是NVIDIA公司推出的通用并行計(jì)算架構(gòu),使GPU能夠解決復(fù)雜的計(jì)算問題[7]。
MIMO雜波模型的算法在運(yùn)算法則上的一致性和并行性,很好的符合了GPU并行運(yùn)算的架構(gòu)特性。針對(duì)CUDA編程模型的特點(diǎn),對(duì)機(jī)載MIMO雷達(dá)雜波模型進(jìn)行改進(jìn),引入更多的并行算法和線程,有效利用GPU資源,以提高計(jì)算效率。最后測(cè)試了模型結(jié)構(gòu)和數(shù)據(jù)規(guī)模對(duì)GPU的加速效果的影響,以實(shí)現(xiàn)基于CUDA的并行運(yùn)算的最優(yōu)化,為MIMO領(lǐng)域廣泛存在的大數(shù)據(jù)量運(yùn)算提供了一條新的解決思路。
機(jī)載MIMO雷達(dá)的雜波模型如圖1所示。發(fā)射陣元數(shù)為NT,接收陣元數(shù)為NR,每個(gè)陣元均為全向天線,φ為地面散射體或目標(biāo)的俯仰角,θ是地面散射體或目標(biāo)的方位角。發(fā)射陣列和接收陣列為平行的均勻線陣,且二者距離較近。載機(jī)平臺(tái)以速度υ沿線陣軸向運(yùn)動(dòng)。這樣的假設(shè)符合大多數(shù)機(jī)載地面動(dòng)目標(biāo)顯示系統(tǒng)。
圖1 機(jī)載MIMO雷達(dá)雜波模型
圖1第nT個(gè)發(fā)射陣元發(fā)射的窄帶信號(hào)為sn(t)。每個(gè)相干脈沖處理間隔(CPI)發(fā)射K個(gè)脈沖,脈沖重復(fù)周期為Ts,積累時(shí)間TCPI=Ts×K。在地表面(海面)建立一個(gè)Δθ×ΔR的柵格單元,Δθ和ΔR分別為角分辨值和距離分辨值。從文獻(xiàn)[3]可得:
其中λ為波長(zhǎng),B為NT個(gè)發(fā)射信號(hào)的總帶寬。
第nT個(gè)陣元的發(fā)射信號(hào)到達(dá)第m個(gè)距離環(huán)第l個(gè)方位角雜波單元產(chǎn)生的回波,被第nR個(gè)陣元接收到的信號(hào):
其中Alm為該雜波單元的反射系數(shù),klm為多普勒效應(yīng)壓縮系數(shù),τm為該距離環(huán)引起的時(shí)延,Alm為該雜波單元的反射系數(shù),nlm(t)為噪聲。φ(l,m,nT)為第nT個(gè)發(fā)射陣元引入的相位。ψ(l,m,nR)是第nR個(gè)接收陣元引入的相位。
第nR個(gè)接收陣元接收到的總回波為:
MIMO雷達(dá)的所有接收數(shù)據(jù)為NR個(gè)接收陣元的總回波構(gòu)成的矩陣。
在該模型中,(2)式需要重復(fù)NT×M×L×NR次。為減少運(yùn)算量,可以改進(jìn)模型算法的計(jì)算順序。方法主要有:a.盡量提取公因式,減少乘運(yùn)算;b.盡量減少sn(t)的運(yùn)算次數(shù)。因?yàn)樵趯?shí)驗(yàn)中發(fā)現(xiàn),以文獻(xiàn)[6]中的線性調(diào)頻信號(hào)作為仿真信號(hào),sn(t)算式復(fù)雜,是運(yùn)算量大的一大原因。
改進(jìn)后的算法為:先計(jì)算第m個(gè)距離環(huán)上第l個(gè)方位角雜波單元上對(duì)所有發(fā)射信號(hào)的總回波到達(dá)雷達(dá)接收陣元nR時(shí)的信號(hào):
改進(jìn)后的算法,其運(yùn)行時(shí)間依舊不能令人滿意(可參見4.1節(jié)中的仿真實(shí)例)。然而,改進(jìn)計(jì)算順序來減少運(yùn)算量的空間已經(jīng)不大了。
當(dāng)機(jī)載雷達(dá)下視探測(cè)目標(biāo),地海雜波不僅強(qiáng)度大,多普勒頻譜寬,而且可能在所有的距離上成為目標(biāo)檢測(cè)的背景[3]。這導(dǎo)致建模過程中需要模擬的物理量多,計(jì)算復(fù)雜;距離和角度范圍大,需要建模的雜波單元多。
機(jī)載MIMO雷達(dá)的雜波模型運(yùn)算量大,除了上面所說的機(jī)載雷達(dá)平臺(tái)因素外,MIMO雷達(dá)系統(tǒng)特性的兩個(gè)因素使它的運(yùn)算量在相控陣?yán)走_(dá)同類模型的運(yùn)算量上成倍增加。
第一,由于MIMO雷達(dá)發(fā)射低增益的寬波束,因此需要長(zhǎng)時(shí)間積累,通常TCPI是相控陣的M倍,導(dǎo)致建模時(shí)數(shù)據(jù)規(guī)模增為相控陣的M倍。
第二,相控陣?yán)走_(dá)發(fā)射相干信號(hào),MIMO雷達(dá)發(fā)射正交或部分相干信號(hào),導(dǎo)致MIMO建模不能將發(fā)射波束合成來減小運(yùn)算量。即MIMO雷達(dá)的sn(t)需要分別算,而相控陣可只計(jì)算一個(gè)sn(t)。
機(jī)載MIMO雷達(dá)的雜波模型在運(yùn)算量上成倍增加,不僅延長(zhǎng)了運(yùn)算時(shí)間,而且其運(yùn)算過程中產(chǎn)生和存儲(chǔ)的數(shù)據(jù)同時(shí)也成倍增加,對(duì)硬件的要求也更高。一個(gè)雷達(dá)參數(shù)的典型設(shè)置,如4.1節(jié)中的仿真實(shí)例,足以使運(yùn)行時(shí)間達(dá)到數(shù)小時(shí)。并且,數(shù)據(jù)存儲(chǔ)達(dá)到數(shù)十萬甚至百萬,普通的仿真平臺(tái)甚至不能滿足。機(jī)載MIMO雷達(dá)雜波模型的大運(yùn)算量,引起仿真歷時(shí)長(zhǎng),影響科研進(jìn)度;數(shù)據(jù)量過大,對(duì)硬件設(shè)備要求高。為解決此問題,有必要尋求適合的新方法和工具。
近年來GPU迅猛發(fā)展,在浮點(diǎn)數(shù)的計(jì)算能力和內(nèi)存帶寬上已經(jīng)遠(yuǎn)遠(yuǎn)地超過了CPU。NVIDIA推出的統(tǒng)一計(jì)算設(shè)備架構(gòu)CUDA,GPU推向通用計(jì)算的領(lǐng)域中[8]。
GPU的中心思想在于通過大量功能簡(jiǎn)單的流處理器共同運(yùn)轉(zhuǎn)來提高計(jì)算和數(shù)據(jù)的整體吞吐率。從硬件架構(gòu)看,GPU包含有若干個(gè)線程處理群(Thread Processing Cluster,TPC),每個(gè) TPC 包含數(shù)個(gè)流多處理器(Stream Multiprocessor,SM),每個(gè)SM中包含幾個(gè)(一般是8個(gè))流處理器(Stream Processor,SP)。SP即通常所說的 GPU的“核”。SP是GPU的基本執(zhí)行單元,有自己的寄存器,但SM才具有取指、解碼、分發(fā)邏輯的功能。隸屬于同一SM的SP共用同一套取指和發(fā)指單元,也共用一塊共享存儲(chǔ)器。采用這樣的硬件結(jié)構(gòu),使得GPU優(yōu)于執(zhí)行并行計(jì)算。
與硬件架構(gòu)相對(duì)應(yīng)的是,在編程模型上CUDA采用了SIMT(Single Instruction,Multiple Tread,單指令多線程)執(zhí)行模型。CUDA編程模型將CPU作為主機(jī),GPU作為協(xié)處理器或者設(shè)備。運(yùn)行在GPU上的CUDA并行計(jì)算函數(shù)成為內(nèi)核函數(shù)(kernel),內(nèi)核函數(shù)一般由超多線程執(zhí)行,由主機(jī)端調(diào)用。內(nèi)核函數(shù)通過將數(shù)據(jù)抽象到線程層次中,可以使用GPU的SIMT多處理器對(duì)數(shù)據(jù)進(jìn)行并行的計(jì)算。
CUDA通過三層層次結(jié)構(gòu)來管理并行線程。最基本的線程(thread)組成線程塊(block),一定數(shù)量的線程塊組織成線程網(wǎng)絡(luò)(grid)。同一個(gè)block內(nèi)的線程可以相互協(xié)作,通過共享存儲(chǔ)器來共享數(shù)據(jù),實(shí)現(xiàn)對(duì)加速程序的精細(xì)操作。同一個(gè)block的線程會(huì)在同一個(gè)流多處理器中執(zhí)行,而一個(gè)流處理器可以同時(shí)有多個(gè)block。block中線程數(shù)量的大小有限度,合理分配block的大小,使流處理器對(duì)thread并行運(yùn)算多次,這樣隱藏了thread與thread之間和block與block之間讀取和存入延遲,更好地利用執(zhí)行單元的資源,提高并行運(yùn)算的效率。
本文第2部分分析出機(jī)載MIMO雷達(dá)雜波模型的計(jì)算公式。再研究該算法,不考慮物理意義,僅從數(shù)學(xué)角度分析雜波模型的數(shù)學(xué)算式。可以發(fā)現(xiàn),模型算式看似十分復(fù)雜,實(shí)則 smnlRlθ(t)作為 nT、l、m、nR、t五個(gè)參數(shù)的初等函數(shù),運(yùn)算法則是一致的。并且,其中大量運(yùn)算是加減乘除和指數(shù)運(yùn)算,并沒有分段、判斷或迭代等邏輯性強(qiáng)的運(yùn)算。該模型的運(yùn)算量大,是源于同一運(yùn)算法則的巨量次反復(fù)計(jì)算。運(yùn)算法則的一致性和并行性,有利于CUDA架構(gòu)發(fā)揮其在大規(guī)模并行運(yùn)算上的特性。
根據(jù)GPU的架構(gòu)特性和CUDA的編程特點(diǎn),對(duì)模型的原算法進(jìn)行適當(dāng)?shù)母淖?,使新算法有盡量多的并行算式,編程時(shí)執(zhí)行盡量多的并行線程。具體思想是:在時(shí)間t序列上,某個(gè)雜波單元對(duì)某個(gè)發(fā)射信號(hào)的回波數(shù)據(jù)可以對(duì)應(yīng)于thread的ID號(hào)并行運(yùn)算來產(chǎn)生;雜波單元不同,以及發(fā)射陣元和接收陣元引入的變化(比如 τm、Alm、klm等),可看做因 nT、l、m、nR變化的參數(shù);如此一來,數(shù)據(jù)的運(yùn)算法則一樣,不一樣的是參數(shù),適合改編于kernel函數(shù)中。同個(gè)時(shí)間序列上的點(diǎn),在同個(gè)block中實(shí)現(xiàn)并行運(yùn)算;同一個(gè)雜波單元對(duì)同一個(gè)發(fā)射通道的計(jì)算法則是一樣的,歸于同一個(gè)grid;接收陣元或雜波單元不同,采用kernel外的循環(huán)計(jì)算??傊?,在CUDA編程結(jié)構(gòu)的三個(gè)層次上,實(shí)現(xiàn)運(yùn)算法則相同,導(dǎo)入?yún)?shù)不同,如此生成各接收通道數(shù)據(jù)。
圖2給出了機(jī)載MIMO雷達(dá)雜波模型的CUDA實(shí)現(xiàn)流程圖,大體上有以下四步:
第一,設(shè)置雷達(dá)、雜波和目標(biāo)等參數(shù),通過CUDA函數(shù)傳入顯存,進(jìn)入 kernel函數(shù),開始 GPU運(yùn)算。
第二,進(jìn)行線程規(guī)劃,依據(jù)雜波模型中陣元個(gè)數(shù)和雜波單元數(shù)。
第三,計(jì)算雜波單元的回波信號(hào)。并行線程的參數(shù),存儲(chǔ)在共享存儲(chǔ)器中,提高運(yùn)算速度。
第四,計(jì)算各通道的接收信號(hào),并將結(jié)果從顯存導(dǎo)入內(nèi)存,退出kernel函數(shù),結(jié)束GPU運(yùn)算。
圖2 基于CUDA的機(jī)載MIMO雷達(dá)雜波模型的編程流程
為測(cè)試機(jī)載MIMO雷達(dá)雜波模型的GPU運(yùn)算效果,分別對(duì)基于CPU和CUDA的建模進(jìn)行仿真。
仿真平臺(tái):處理器 CPU為 Intel i5750,物理4核,主頻2.66GHz,內(nèi)存4G,GPU 為 GTX465,單精度浮點(diǎn)計(jì)算能力897GFlops。Windows XP系統(tǒng),編程環(huán)境:visual 2005,CUDA編譯器nvcc2.0。
雷達(dá)參數(shù):設(shè)定一個(gè)MIMO雷達(dá)的典型值。載機(jī)高度 H=8km,υ=120m/s,發(fā)射陣元數(shù) NT=8,接收陣元數(shù)NR=16。發(fā)射信號(hào)為線性調(diào)頻信號(hào),帶寬B=0.2MHz,λ =0.246m,脈沖發(fā)射周期 Ts=0.5ms,K=32,TCPI=0.016s,采樣頻率 f=3.2MHz。
依據(jù)2.1節(jié)中的建模,取Δθ=0.1,ΔR=100m。研究在角度范圍π,距離0-80km的雜波模型,雜波單元有25600個(gè),時(shí)間序列長(zhǎng)度NCPI=51200。最終產(chǎn)生NR個(gè)接收陣元的接收數(shù)據(jù),排列為16×51200的矩陣。在此設(shè)置下,數(shù)據(jù)規(guī)模達(dá)到了80多萬,CPU需要運(yùn)行近4h,GPU只需要運(yùn)行近4min,加速效果非常明顯。
為驗(yàn)證CUDA運(yùn)算的正確性,對(duì)模型中的接收數(shù)據(jù)進(jìn)行雜波譜分析,結(jié)果如圖3,與CPU運(yùn)算結(jié)果一致,說明基于CUDA的機(jī)載MIMO雜波模型是正確的。
上一節(jié)的仿真實(shí)驗(yàn)證明了CUDA加速建模的可行性,在這一節(jié),測(cè)試?yán)走_(dá)參數(shù)不同對(duì)加速效果的影響,并分析如何建模能更好發(fā)揮GPU的并行計(jì)算能力。
圖3 基于CUDA的機(jī)載MIMO雷達(dá)雜波譜
在MIMO雷達(dá)系統(tǒng)的參數(shù)中,常修改的參數(shù)主要有發(fā)射陣元數(shù),接收陣元數(shù),脈沖積累時(shí)間,雜波距離環(huán)和測(cè)角度范圍等。根據(jù)3.2中雜波建模思想,從中挑選積累脈沖數(shù)K和接收陣元數(shù)NR作為測(cè)試參數(shù),因?yàn)橐环矫娑哂绊懼鴶?shù)據(jù)規(guī)模NR×NCPI,另一方面,同樣的數(shù)據(jù)規(guī)模下,不同的(K,NR)代表不同的模型結(jié)構(gòu)。各(K,NR)設(shè)置下GPU和CPU的運(yùn)算對(duì)比如表1所示。
表1 機(jī)載MIMO雜波建模在CPU與GPU運(yùn)行時(shí)間對(duì)比(單位:s)
數(shù)據(jù)規(guī)模越大,CUDA加速效果越明顯。這在NR=16時(shí)的測(cè)試中可以明顯地看到。當(dāng)數(shù)據(jù)規(guī)模增加一倍,CPU運(yùn)行時(shí)間也幾乎增加一倍,CUDA運(yùn)行時(shí)間則更少。CUDA的加速比在數(shù)據(jù)規(guī)模小時(shí)并不明顯,其意義主要在于大規(guī)模數(shù)據(jù)運(yùn)算。當(dāng)數(shù)據(jù)量過大,CPU內(nèi)存已經(jīng)無法正確運(yùn)行出結(jié)果時(shí),GPU硬件資源依然能夠支持程序運(yùn)行。
再看模型結(jié)構(gòu)。相同的數(shù)據(jù)規(guī)模,CUDA運(yùn)算時(shí)間差異很大,如(K,NR)=(4,64)或(16,16)。加速比隨著K增大而急劇增加,隨NR增大而緩慢增加,這要?dú)w結(jié)于模型結(jié)構(gòu)的因素。如前所述,同一個(gè)時(shí)間序列上的數(shù)據(jù),通過一個(gè)kernel函數(shù)并行運(yùn)算,故K能直接影響CUDA并行運(yùn)算的速度;不同接收通道的數(shù)據(jù),是在外部循環(huán)調(diào)用kernel函數(shù),故NR對(duì)加速比影響不大。這說明模型結(jié)構(gòu)與加速效果影響甚大。因此,在設(shè)計(jì)基于CUDA的算法和編程中,應(yīng)當(dāng)盡量避免kernel內(nèi)外的判斷循環(huán)等邏輯,使kernel中含有最多的并行同個(gè)運(yùn)算,利于CUDA加速運(yùn)算。
此外,GPU加速比除了與編程結(jié)構(gòu)和數(shù)據(jù)規(guī)模有關(guān),也與GPU和CPU本身硬件上的運(yùn)算能力有關(guān)。一般來說,比起同規(guī)格的CPU,GPU無論在浮點(diǎn)計(jì)算能力、內(nèi)存和帶寬上都占有優(yōu)勢(shì)。只要正確地設(shè)計(jì)算法和編程,將GPU的并行運(yùn)算潛力挖掘出來,它的計(jì)算能力能達(dá)到CPU的數(shù)十倍。
本文主要研究了基于CUDA的機(jī)載MIMO雷達(dá)雜波模型的實(shí)現(xiàn),測(cè)試了模型結(jié)構(gòu)和數(shù)據(jù)規(guī)模對(duì)加速效果的影響,。仿真實(shí)驗(yàn)表明,本文提出的基于CUDA建模,發(fā)揮出了GPU在并行通用計(jì)算的長(zhǎng)處,相比傳統(tǒng)CPU,CUDA運(yùn)算準(zhǔn)確,速度提升數(shù)十倍,并能勝任更大規(guī)模的運(yùn)算量。
機(jī)載MIMO雷達(dá)屬于發(fā)射分集的MIMO雷達(dá)。對(duì)于其他系統(tǒng)的MIMO雷達(dá),以及MIMO雷達(dá)中并行計(jì)算量豐富的其他階段,結(jié)論同樣適用。為使GPU能夠在更廣闊的領(lǐng)域發(fā)揮威力,未來的研究將專注于進(jìn)一步提高計(jì)算效率,以及將CUDA應(yīng)用于更深入的階段,比如在信號(hào)處理時(shí),匹配濾波和傅里葉變換涉及的運(yùn)算量更加龐大。
[1]E Fishler,A Haimovich,R Blum,et al.MIMO radar:An idea whose time has come[C].Proc.of the IEEE Int.Conf.on Radar.Philadelphia,PA,April 2004.
[2]何子述,韓春林,劉波.MIMO雷達(dá)概念及其技術(shù)特點(diǎn)分析[J].電子學(xué)報(bào),2005,33(12A):2441-2445.
[3]賁德,韋傳安,林幼權(quán).機(jī)載雷達(dá)技術(shù)[M].北京:電子工業(yè)出版社,2006.
[4]R Klemn.Adaptive clutter suppression for airborne phased arrays.IEE Pro.F.1983,130(1).
[5]MACEDONIA M.The GPU enters computing's main stream[J].IEEE Computers,2003.
[6]劉波.MIMO雷達(dá)正交波形設(shè)計(jì)及信號(hào)處理研究[D].四川:電子科技大學(xué)電子工程學(xué)院,2008.
[7]NVIDIA.NVIDIA CUDA Programming Guide Version 2.1[Z].2008.
[8]張舒,褚艷利,趙開勇.GPU高性能運(yùn)算之CUDA[M].北京:中國(guó)水利水電出版社,2009.