楊 杰 馬夢博 鐘何平
(1.海軍裝備部駐天津地區(qū)防救軍事代表室 天津 300042)(2.海軍工程大學(xué)海軍水聲技術(shù)研究所 武漢 430033)
合成孔徑聲納(Synthetic Aperture Sonar,SAS)是一種高分辨率成像聲納,其具有距離向分辨率高和方位向分辨率與距離無關(guān)的優(yōu)點(diǎn),與常規(guī)的側(cè)掃聲納和多波束測深儀相比,分辨率高1~2個(gè)數(shù)量級,可以廣泛用于海底測量、水下考古、海底石油勘探和搜尋水下失落物體等,也能提高水雷的識別能力[1~5]。在合成孔徑聲納系統(tǒng)設(shè)計(jì)過程中,原始回波仿真是一個(gè)比不可少的環(huán)節(jié)[6~7],可通過仿真來預(yù)測設(shè)計(jì)的系統(tǒng)性能,驗(yàn)證系統(tǒng)設(shè)計(jì)參數(shù)的合理性,避免造成錯(cuò)誤設(shè)計(jì)所帶來的損失。常用的回波仿真方法主要有時(shí)域法[8~9]和頻域法[10~12]兩種。時(shí)域法主要是完全按照回波模型進(jìn)行仿真,沒有進(jìn)行任何近似,是最精確的仿真方法,其缺點(diǎn)是運(yùn)算量極大,嚴(yán)重限制了其應(yīng)用。頻域仿真方法與時(shí)域仿真方法相比,效率較高,但是降低了所生成的仿真回波精度。
隨機(jī)計(jì)算機(jī)技術(shù)的發(fā)展,多核計(jì)算已在多種應(yīng)用領(lǐng)域取得顯著加速性能,它為快速原始合成孔徑聲納回波生成提供了一種有效手段。本文在共享內(nèi)存環(huán)境下,采用Matlab并行編程方式實(shí)現(xiàn)了一種快速合成孔徑聲納回波仿真方法。首先給出了合成孔徑聲納回波仿真模型,然后在共享內(nèi)存環(huán)境下設(shè)計(jì)了并行仿真方法,并通過試驗(yàn)對并行回波仿真方法的正確性和效率進(jìn)行了驗(yàn)證。試驗(yàn)結(jié)果表明:并行算法與串行算法相比,加速比高達(dá)3.74,并且其加速性能還會(huì)隨著計(jì)算平臺性能提升而提升。
圖1 合成孔徑聲納回波模型
圖1 直角坐標(biāo)系中,合成孔徑聲納平臺沿著方位向運(yùn)動(dòng),目標(biāo)位于坐標(biāo)(r,0)處,發(fā)射陣和N個(gè)接收子陣沿方位向排列,發(fā)射陣位于尾端,其位置為(0,vt)。為簡化處理,我們僅考慮一個(gè)接收子陣(取第i個(gè)接收子陣)的情況,此接收子陣與發(fā)射陣方位向相位中心間隔為Δhi,第i個(gè)接收子陣接收到的回波信號可表示為
其中Ri(t,r)=R1+R3為信號實(shí)際傳播路徑,其中去回程為s(τ)=rect(τT)為發(fā)射信號包絡(luò),c為聲速,f0為信號中心頻率,k為信號調(diào)頻斜率。
對于多個(gè)點(diǎn)目標(biāo)進(jìn)行仿真時(shí),需要在每個(gè)發(fā)射陣位置依次判斷每個(gè)點(diǎn)目標(biāo)是否在波束照射范圍內(nèi)。對于位于波束范圍內(nèi)的點(diǎn)目標(biāo),計(jì)算其與每個(gè)接收陣之間的時(shí)延,將發(fā)射信號進(jìn)行對應(yīng)時(shí)延后疊加到對應(yīng)子陣回波上。
Matlab的并行計(jì)算實(shí)質(zhì)還是主從結(jié)構(gòu)的分布式計(jì)算。初始化Matlab并行計(jì)算環(huán)境時(shí),起始的Matlab進(jìn)程自動(dòng)成為主節(jié)點(diǎn),同時(shí)初始化多個(gè)Matlab計(jì)算子節(jié)點(diǎn),子節(jié)點(diǎn)個(gè)數(shù)通過參數(shù)指定。Matlab的并行計(jì)算架構(gòu)主要依賴于并行計(jì)算工具箱(Parallel Computing Toolbox),為完成并行計(jì)算,Matlab提供了一系列的并行結(jié)構(gòu),其中最常用的為parfor循環(huán)結(jié)構(gòu),可方便用戶進(jìn)行并行程序設(shè)計(jì)。為簡化用戶操作,Matlab隱藏了并行任務(wù)創(chuàng)建和管理的具體細(xì)節(jié),降低了用戶開發(fā)的難度,同時(shí)存在限制用戶靈活性的問題。
采用Matlab進(jìn)行并行計(jì)算前,首先要調(diào)用parpool函數(shù)配置和開啟并行計(jì)算池。Matlab并行執(zhí)行parfor循環(huán)時(shí),采用client和worker模式,其中client指啟動(dòng)并行代碼的Matlab段,worker指并行運(yùn)行代碼的Matlab段。Matlab在處理parfor代碼段時(shí),它將任務(wù)分配給多個(gè)workers上并行執(zhí)行。假設(shè)worker的數(shù)量為m,循環(huán)的次數(shù)為n。如果兩者之比為整數(shù),則剛好實(shí)現(xiàn)計(jì)算任務(wù)的均衡分配;否則,部分worker的計(jì)算任務(wù)會(huì)比較大,只能采用非均衡的計(jì)算任務(wù)分配方法。
圖2 并行回波仿真流程
基于Matlab的合成孔徑聲納原始回波仿真流程如圖2所示,具體步驟如下:
1)啟動(dòng)Matlab,載入原始回波參數(shù)。
2)根據(jù)仿真回波參數(shù)開辟原始回波存儲(chǔ)空間。
3)調(diào)用matlabpool命令,啟動(dòng)Matlab并行環(huán)境,并指定計(jì)算核數(shù)。
4)根據(jù)計(jì)算核數(shù)和仿真的原始回波在空間上的長度進(jìn)行原始回波分塊,每一計(jì)算核負(fù)責(zé)不同分塊上的回波計(jì)算,該部分主要依靠parfor來實(shí)現(xiàn)。
5)將分塊計(jì)算的回波在進(jìn)行拼接獲取完整的原始回波。
6)調(diào)用matlabpool close命令,釋放Matlab并行環(huán)境,并結(jié)束程序運(yùn)行。
為了驗(yàn)證并行合成孔徑聲納回波仿真方法性能,在如下計(jì)算環(huán)境進(jìn)行了回波仿真試驗(yàn):處理器Intel(R)Xeon(R)CPU 3.3G(4核);內(nèi)存8G;操作系統(tǒng)Windows 7專業(yè)版;軟件環(huán)境Matlab2015。
仿真試驗(yàn)中采用了3個(gè)點(diǎn)目標(biāo),它們的相對位置如圖3所示,中心點(diǎn)位于(70m,0m),左邊點(diǎn)目標(biāo)位于(60m,0m),右邊點(diǎn)目標(biāo)位于(80m,0m)。仿真試驗(yàn)參數(shù)如表1所示,中心頻率為150kHz,帶寬15kHz,脈寬10ms,陣長0.04m,載體速度1m/s,聲速1500 m/s,接收子陣10個(gè),脈沖間隔為0.2s。串行回波仿真所得原始回波如圖4(a)所示,回波在方位向的長度隨距離而增加,并行回波仿真幅度如圖4(b)所示,可看出兩者結(jié)果一致。在驗(yàn)證并行回波仿真算法效率前,我們先采用距離多普勒成像算法對仿真回波進(jìn)行了成像試驗(yàn),圖5(a)為成像結(jié)果的幅度圖,其位置與仿真目標(biāo)位置完全一致。點(diǎn)目標(biāo)對應(yīng)的距離和方位向剖面如圖5(b)所示,其旁瓣和分辨率都滿足成像要求,驗(yàn)證了并行合成孔徑聲納回波仿真算法的正確性。
圖3 仿真目標(biāo)點(diǎn)相對位置
表1 原始回波仿真參數(shù)
圖4 原始回波幅度圖
圖5 點(diǎn)目標(biāo)成像結(jié)果
不同計(jì)算核數(shù)下回波信號仿真效率比較如表2所示。從表中可以看出,單核進(jìn)行原始回波計(jì)算時(shí),所需時(shí)間最長,為14.6s,在加速比計(jì)算過程中,以單核計(jì)算時(shí)間為參考,將其加速比設(shè)置為1。隨著計(jì)算核數(shù)增加,加速比顯著增加,計(jì)算核數(shù)分別為 2、3、4和 5時(shí),加速比分別為 1.92、2.81、3.74、3.65。由于計(jì)算平臺總核數(shù)為4,因此當(dāng)設(shè)置計(jì)算核數(shù)為5時(shí),對效率提升沒有效果,反而效率略有下降。一般情況下,為達(dá)到最高加速比,應(yīng)該將計(jì)算核數(shù)設(shè)置為計(jì)算平臺的核數(shù)。從回波仿真計(jì)算時(shí)間結(jié)果來看,采用并行計(jì)算方式后,合成孔徑聲納回波仿真效率得到顯著提升。
表2 回波仿真算法成像效率比較(s)
本文提出了一種基于Matlab的合成孔徑聲納回波并行仿真方法。首先給出了合成孔徑聲納回波仿真模型,然后在共享內(nèi)存環(huán)境下基于Matlab進(jìn)行了并行回波仿真方法設(shè)計(jì),最后通過實(shí)驗(yàn)驗(yàn)證了并行回波仿真方法的正確性和高效性。隨著計(jì)算平臺計(jì)算性能的提升,計(jì)算核數(shù)增加,并行算法的加速性能在無需修改程序的情況下可得到進(jìn)一步提升。