王占廣 羅忠濤 李 軍 孫 穎
(電子科技大學 成都 611731)
MIMO雷達作為一種新的雷達體制,近年來受到了國內外的廣泛關注[1]。MIMO雷達發射正交或部分相關信號,形成寬波束,在抗信號截獲、檢測弱目標能力以及速度分辨力等性能上更有優勢[2],但同時使MIMO雷達的運算數據量成倍增加。在下視探測目標時,機載雷達的回波復雜[3],文獻[4]中機載雷達雜波模型具有通用性和實用價值。借鑒該模型,我們建立機載MIMO雷達的雜波模型。由于MIMO雷達系統和機載雜波的固有特性,該模型的運算量龐大不可避免,對平臺硬件要求高,需要運行較長時間。
圖形處理器(Graphic Processing Unit,GPU)以其先進的多核結構和強大的浮點計算能力為并行通用計算提供了很具發展前景的新型運算平臺[5]。與CPU相比,GPU用于通用計算的性能高,成本低,內存和帶寬資源大。CUDA(Compute Unified Device Architecture)是NVIDIA公司推出的通用并行計算架構,使GPU能夠解決復雜的計算問題[7]。
MIMO雜波模型的算法在運算法則上的一致性和并行性,很好的符合了GPU并行運算的架構特性。針對CUDA編程模型的特點,對機載MIMO雷達雜波模型進行改進,引入更多的并行算法和線程,有效利用GPU資源,以提高計算效率。最后測試了模型結構和數據規模對GPU的加速效果的影響,以實現基于CUDA的并行運算的最優化,為MIMO領域廣泛存在的大數據量運算提供了一條新的解決思路。
機載MIMO雷達的雜波模型如圖1所示。發射陣元數為NT,接收陣元數為NR,每個陣元均為全向天線,φ為地面散射體或目標的俯仰角,θ是地面散射體或目標的方位角。發射陣列和接收陣列為平行的均勻線陣,且二者距離較近。載機平臺以速度υ沿線陣軸向運動。這樣的假設符合大多數機載地面動目標顯示系統。

圖1 機載MIMO雷達雜波模型
圖1第nT個發射陣元發射的窄帶信號為sn(t)。每個相干脈沖處理間隔(CPI)發射K個脈沖,脈沖重復周期為Ts,積累時間TCPI=Ts×K。在地表面(海面)建立一個Δθ×ΔR的柵格單元,Δθ和ΔR分別為角分辨值和距離分辨值。從文獻[3]可得:

其中λ為波長,B為NT個發射信號的總帶寬。
第nT個陣元的發射信號到達第m個距離環第l個方位角雜波單元產生的回波,被第nR個陣元接收到的信號:

其中Alm為該雜波單元的反射系數,klm為多普勒效應壓縮系數,τm為該距離環引起的時延,Alm為該雜波單元的反射系數,nlm(t)為噪聲。φ(l,m,nT)為第nT個發射陣元引入的相位。ψ(l,m,nR)是第nR個接收陣元引入的相位。
第nR個接收陣元接收到的總回波為:

MIMO雷達的所有接收數據為NR個接收陣元的總回波構成的矩陣。
在該模型中,(2)式需要重復NT×M×L×NR次。為減少運算量,可以改進模型算法的計算順序。方法主要有:a.盡量提取公因式,減少乘運算;b.盡量減少sn(t)的運算次數。因為在實驗中發現,以文獻[6]中的線性調頻信號作為仿真信號,sn(t)算式復雜,是運算量大的一大原因。
改進后的算法為:先計算第m個距離環上第l個方位角雜波單元上對所有發射信號的總回波到達雷達接收陣元nR時的信號:

改進后的算法,其運行時間依舊不能令人滿意(可參見4.1節中的仿真實例)。然而,改進計算順序來減少運算量的空間已經不大了。
當機載雷達下視探測目標,地海雜波不僅強度大,多普勒頻譜寬,而且可能在所有的距離上成為目標檢測的背景[3]。這導致建模過程中需要模擬的物理量多,計算復雜;距離和角度范圍大,需要建模的雜波單元多。
機載MIMO雷達的雜波模型運算量大,除了上面所說的機載雷達平臺因素外,MIMO雷達系統特性的兩個因素使它的運算量在相控陣雷達同類模型的運算量上成倍增加。
第一,由于MIMO雷達發射低增益的寬波束,因此需要長時間積累,通常TCPI是相控陣的M倍,導致建模時數據規模增為相控陣的M倍。
第二,相控陣雷達發射相干信號,MIMO雷達發射正交或部分相干信號,導致MIMO建模不能將發射波束合成來減小運算量。即MIMO雷達的sn(t)需要分別算,而相控陣可只計算一個sn(t)。
機載MIMO雷達的雜波模型在運算量上成倍增加,不僅延長了運算時間,而且其運算過程中產生和存儲的數據同時也成倍增加,對硬件的要求也更高。一個雷達參數的典型設置,如4.1節中的仿真實例,足以使運行時間達到數小時。并且,數據存儲達到數十萬甚至百萬,普通的仿真平臺甚至不能滿足。機載MIMO雷達雜波模型的大運算量,引起仿真歷時長,影響科研進度;數據量過大,對硬件設備要求高。為解決此問題,有必要尋求適合的新方法和工具。
近年來GPU迅猛發展,在浮點數的計算能力和內存帶寬上已經遠遠地超過了CPU。NVIDIA推出的統一計算設備架構CUDA,GPU推向通用計算的領域中[8]。
GPU的中心思想在于通過大量功能簡單的流處理器共同運轉來提高計算和數據的整體吞吐率。從硬件架構看,GPU包含有若干個線程處理群(Thread Processing Cluster,TPC),每個 TPC 包含數個流多處理器(Stream Multiprocessor,SM),每個SM中包含幾個(一般是8個)流處理器(Stream Processor,SP)。SP即通常所說的 GPU的“核”。SP是GPU的基本執行單元,有自己的寄存器,但SM才具有取指、解碼、分發邏輯的功能。隸屬于同一SM的SP共用同一套取指和發指單元,也共用一塊共享存儲器。采用這樣的硬件結構,使得GPU優于執行并行計算。
與硬件架構相對應的是,在編程模型上CUDA采用了SIMT(Single Instruction,Multiple Tread,單指令多線程)執行模型。CUDA編程模型將CPU作為主機,GPU作為協處理器或者設備。運行在GPU上的CUDA并行計算函數成為內核函數(kernel),內核函數一般由超多線程執行,由主機端調用。內核函數通過將數據抽象到線程層次中,可以使用GPU的SIMT多處理器對數據進行并行的計算。
CUDA通過三層層次結構來管理并行線程。最基本的線程(thread)組成線程塊(block),一定數量的線程塊組織成線程網絡(grid)。同一個block內的線程可以相互協作,通過共享存儲器來共享數據,實現對加速程序的精細操作。同一個block的線程會在同一個流多處理器中執行,而一個流處理器可以同時有多個block。block中線程數量的大小有限度,合理分配block的大小,使流處理器對thread并行運算多次,這樣隱藏了thread與thread之間和block與block之間讀取和存入延遲,更好地利用執行單元的資源,提高并行運算的效率。
本文第2部分分析出機載MIMO雷達雜波模型的計算公式。再研究該算法,不考慮物理意義,僅從數學角度分析雜波模型的數學算式。可以發現,模型算式看似十分復雜,實則 smnlRlθ(t)作為 nT、l、m、nR、t五個參數的初等函數,運算法則是一致的。并且,其中大量運算是加減乘除和指數運算,并沒有分段、判斷或迭代等邏輯性強的運算。該模型的運算量大,是源于同一運算法則的巨量次反復計算。運算法則的一致性和并行性,有利于CUDA架構發揮其在大規模并行運算上的特性。
根據GPU的架構特性和CUDA的編程特點,對模型的原算法進行適當的改變,使新算法有盡量多的并行算式,編程時執行盡量多的并行線程。具體思想是:在時間t序列上,某個雜波單元對某個發射信號的回波數據可以對應于thread的ID號并行運算來產生;雜波單元不同,以及發射陣元和接收陣元引入的變化(比如 τm、Alm、klm等),可看做因 nT、l、m、nR變化的參數;如此一來,數據的運算法則一樣,不一樣的是參數,適合改編于kernel函數中。同個時間序列上的點,在同個block中實現并行運算;同一個雜波單元對同一個發射通道的計算法則是一樣的,歸于同一個grid;接收陣元或雜波單元不同,采用kernel外的循環計算。總之,在CUDA編程結構的三個層次上,實現運算法則相同,導入參數不同,如此生成各接收通道數據。
圖2給出了機載MIMO雷達雜波模型的CUDA實現流程圖,大體上有以下四步:
第一,設置雷達、雜波和目標等參數,通過CUDA函數傳入顯存,進入 kernel函數,開始 GPU運算。
第二,進行線程規劃,依據雜波模型中陣元個數和雜波單元數。
第三,計算雜波單元的回波信號。并行線程的參數,存儲在共享存儲器中,提高運算速度。
第四,計算各通道的接收信號,并將結果從顯存導入內存,退出kernel函數,結束GPU運算。

圖2 基于CUDA的機載MIMO雷達雜波模型的編程流程
為測試機載MIMO雷達雜波模型的GPU運算效果,分別對基于CPU和CUDA的建模進行仿真。
仿真平臺:處理器 CPU為 Intel i5750,物理4核,主頻2.66GHz,內存4G,GPU 為 GTX465,單精度浮點計算能力897GFlops。Windows XP系統,編程環境:visual 2005,CUDA編譯器nvcc2.0。
雷達參數:設定一個MIMO雷達的典型值。載機高度 H=8km,υ=120m/s,發射陣元數 NT=8,接收陣元數NR=16。發射信號為線性調頻信號,帶寬B=0.2MHz,λ =0.246m,脈沖發射周期 Ts=0.5ms,K=32,TCPI=0.016s,采樣頻率 f=3.2MHz。
依據2.1節中的建模,取Δθ=0.1,ΔR=100m。研究在角度范圍π,距離0-80km的雜波模型,雜波單元有25600個,時間序列長度NCPI=51200。最終產生NR個接收陣元的接收數據,排列為16×51200的矩陣。在此設置下,數據規模達到了80多萬,CPU需要運行近4h,GPU只需要運行近4min,加速效果非常明顯。
為驗證CUDA運算的正確性,對模型中的接收數據進行雜波譜分析,結果如圖3,與CPU運算結果一致,說明基于CUDA的機載MIMO雜波模型是正確的。
上一節的仿真實驗證明了CUDA加速建模的可行性,在這一節,測試雷達參數不同對加速效果的影響,并分析如何建模能更好發揮GPU的并行計算能力。

圖3 基于CUDA的機載MIMO雷達雜波譜
在MIMO雷達系統的參數中,常修改的參數主要有發射陣元數,接收陣元數,脈沖積累時間,雜波距離環和測角度范圍等。根據3.2中雜波建模思想,從中挑選積累脈沖數K和接收陣元數NR作為測試參數,因為一方面二者影響著數據規模NR×NCPI,另一方面,同樣的數據規模下,不同的(K,NR)代表不同的模型結構。各(K,NR)設置下GPU和CPU的運算對比如表1所示。

表1 機載MIMO雜波建模在CPU與GPU運行時間對比(單位:s)
數據規模越大,CUDA加速效果越明顯。這在NR=16時的測試中可以明顯地看到。當數據規模增加一倍,CPU運行時間也幾乎增加一倍,CUDA運行時間則更少。CUDA的加速比在數據規模小時并不明顯,其意義主要在于大規模數據運算。當數據量過大,CPU內存已經無法正確運行出結果時,GPU硬件資源依然能夠支持程序運行。
再看模型結構。相同的數據規模,CUDA運算時間差異很大,如(K,NR)=(4,64)或(16,16)。加速比隨著K增大而急劇增加,隨NR增大而緩慢增加,這要歸結于模型結構的因素。如前所述,同一個時間序列上的數據,通過一個kernel函數并行運算,故K能直接影響CUDA并行運算的速度;不同接收通道的數據,是在外部循環調用kernel函數,故NR對加速比影響不大。這說明模型結構與加速效果影響甚大。因此,在設計基于CUDA的算法和編程中,應當盡量避免kernel內外的判斷循環等邏輯,使kernel中含有最多的并行同個運算,利于CUDA加速運算。
此外,GPU加速比除了與編程結構和數據規模有關,也與GPU和CPU本身硬件上的運算能力有關。一般來說,比起同規格的CPU,GPU無論在浮點計算能力、內存和帶寬上都占有優勢。只要正確地設計算法和編程,將GPU的并行運算潛力挖掘出來,它的計算能力能達到CPU的數十倍。
本文主要研究了基于CUDA的機載MIMO雷達雜波模型的實現,測試了模型結構和數據規模對加速效果的影響,。仿真實驗表明,本文提出的基于CUDA建模,發揮出了GPU在并行通用計算的長處,相比傳統CPU,CUDA運算準確,速度提升數十倍,并能勝任更大規模的運算量。
機載MIMO雷達屬于發射分集的MIMO雷達。對于其他系統的MIMO雷達,以及MIMO雷達中并行計算量豐富的其他階段,結論同樣適用。為使GPU能夠在更廣闊的領域發揮威力,未來的研究將專注于進一步提高計算效率,以及將CUDA應用于更深入的階段,比如在信號處理時,匹配濾波和傅里葉變換涉及的運算量更加龐大。
[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雷達概念及其技術特點分析[J].電子學報,2005,33(12A):2441-2445.
[3]賁德,韋傳安,林幼權.機載雷達技術[M].北京:電子工業出版社,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].四川:電子科技大學電子工程學院,2008.
[7]NVIDIA.NVIDIA CUDA Programming Guide Version 2.1[Z].2008.
[8]張舒,褚艷利,趙開勇.GPU高性能運算之CUDA[M].北京:中國水利水電出版社,2009.