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