王慧文 許鋼燦
(第七一五研究所,杭州,310023)
蛙人、UUV 等水下威脅目標(biāo)由于體積小、機(jī)動(dòng)性強(qiáng)、隱蔽性好等特點(diǎn),已成為恐怖活動(dòng)的重要工具。為了提高港口碼頭及其他水域的小目標(biāo)探測(cè)和識(shí)別能力[1-4],反蛙人聲吶需要增加通道數(shù)、提高陣增益,信號(hào)處理算法相應(yīng)也會(huì)日趨復(fù)雜,這些因素都會(huì)大大增加信號(hào)處理的運(yùn)算量。為了實(shí)現(xiàn)所有數(shù)據(jù)的實(shí)時(shí)處理,就需要更高效的信號(hào)處理平臺(tái)。傳統(tǒng)的單核處理器很難實(shí)現(xiàn)大量數(shù)據(jù)的實(shí)時(shí)處理,多核處理器的并行處理已經(jīng)成為解決這一問題的有效途徑[5-6]。本文將MPI 與MKL 引入聲吶信號(hào)的實(shí)時(shí)處理中,MPI 提供多進(jìn)程間的并行化處理架構(gòu)和進(jìn)程間通信,MKL 實(shí)現(xiàn)進(jìn)程內(nèi)部并行計(jì)算。
MPI 是一種基于消息傳遞的并行編程技術(shù),支持異構(gòu)、同構(gòu)環(huán)境里的進(jìn)程通信,多用于分布式進(jìn)程、多核進(jìn)程之間的通信,并且可以與其他并行計(jì)算相結(jié)合,形成不同粒度的并行計(jì)算架構(gòu)。MPI 并行算法是基于進(jìn)程間消息傳遞的算法,它提供了多種通信方式,有點(diǎn)對(duì)點(diǎn)通信、組播通信、非阻塞通信、阻塞通信等[7-8]。反蛙人聲吶的信號(hào)處理按照功能可以劃分為不同的功能模塊,并采用流水線設(shè)計(jì)實(shí)現(xiàn)并行,非常適合使用MPI 進(jìn)行功能模塊之間的并行化處理。
MKL 是英特爾數(shù)學(xué)核心函數(shù)庫,是一套經(jīng)過高度并行優(yōu)化和廣泛線程化的數(shù)學(xué)例程,專為需要極致性能的科學(xué)、工程及金融等領(lǐng)域的應(yīng)用而設(shè)計(jì)。MKL 提供大量的向量、矩陣運(yùn)算函數(shù),調(diào)用這些函數(shù)可實(shí)現(xiàn)局部范圍的高效并行計(jì)算。反蛙人聲吶信號(hào)處理過程中,數(shù)據(jù)處理主要針對(duì)通道、波束進(jìn)行單獨(dú)處理,因此存在大量的單獨(dú)循環(huán),這些循環(huán)操作可采用MKL 實(shí)現(xiàn)。
基于MPI 的并行編程架構(gòu)實(shí)現(xiàn)了功能模塊之間的并行計(jì)算,相比于串行計(jì)算可顯著提高運(yùn)算效率[9-10]。MPI 并行編程框架如圖1 所示,其中功能模塊的數(shù)量需根據(jù)具體應(yīng)用設(shè)計(jì),每個(gè)功能模塊對(duì)應(yīng)MPI 的一個(gè)進(jìn)程。運(yùn)算效率取決于計(jì)算開銷和通信開銷。計(jì)算開銷是進(jìn)程執(zhí)行計(jì)算的時(shí)間,通信開銷是進(jìn)程之間數(shù)據(jù)傳輸及同步的時(shí)間,增加進(jìn)程數(shù)量可以提高并行度,但會(huì)增加進(jìn)程間的通信開銷。
圖1 傳統(tǒng)MPI 并行編程架構(gòu)
MPI 只能實(shí)現(xiàn)進(jìn)程之間的并行計(jì)算,無法在線程級(jí)別進(jìn)行并行運(yùn)算,MKL 可以在線程級(jí)別提供并行運(yùn)算,因此MPI+MKL 這種層次化并行模型能夠?qū)崿F(xiàn)兩級(jí)并行,提供模塊間和模塊內(nèi)部的兩級(jí)并行,它結(jié)合了模塊間的粗粒度并行(濾波器,波束形成,匹配濾波等)和模塊內(nèi)部的細(xì)粒度并行(for循環(huán)并行),執(zhí)行效率遠(yuǎn)高于單純使用MPI 的程序,MPI+MKL 的并行編程架構(gòu)如圖2 所示。
圖2 MPI+MKL 并行編程架構(gòu)
本文的實(shí)現(xiàn)是搭建在多核服務(wù)器上,算法的并行化是在單一的MPI 并行處理算法基礎(chǔ)上結(jié)合MKL 的編程模型,以提供模塊間和模塊內(nèi)的兩級(jí)并行處理,最大限度地利用多核服務(wù)器的體系結(jié)構(gòu)。混合編程模型減少了進(jìn)程間的消息傳遞,增加并行處理的力度,提高了并行效率。
反蛙人聲吶的軟件系統(tǒng)按照功能模塊劃分可分為濾波處理、波束形成、匹配濾波、圖像處理、目標(biāo)識(shí)別。首先初始化MPI 環(huán)境,創(chuàng)建5 個(gè)進(jìn)程,分別對(duì)應(yīng)5 個(gè)功能模塊,實(shí)現(xiàn)一級(jí)并行處理:0 號(hào)進(jìn)程進(jìn)行濾波處理,1 號(hào)進(jìn)程進(jìn)行波束形成,2 號(hào)進(jìn)程進(jìn)行匹配濾波,3 號(hào)進(jìn)程進(jìn)行聲吶圖像處理[11],4 號(hào)進(jìn)程進(jìn)行目標(biāo)識(shí)別。對(duì)于波束形成這種比較耗時(shí)的計(jì)算,也可以將其分成多個(gè)模塊,進(jìn)一步增加并行性。每個(gè)進(jìn)程通過MPI_Recv()接收上一模塊的數(shù)據(jù),完成本模塊的數(shù)據(jù)處理,然后調(diào)用MPI_Send()將本模塊的處理結(jié)果送下一功能模塊。二級(jí)并行處理在進(jìn)程內(nèi)部主要針對(duì)功能模塊內(nèi)部進(jìn)行并行化處理。調(diào)用MKL 函數(shù)實(shí)現(xiàn)功能模塊內(nèi)部并行化處理的軟件流程見圖3。
圖3 反蛙人聲吶處理流程
本文的硬件環(huán)境為聯(lián)想邊緣服務(wù)器SE350(2個(gè)CPU,每個(gè)CPU 包含8 個(gè)核心,16 線程,主頻1.9 GHz,64 G DDR4 內(nèi)存,4T 硬盤);軟件環(huán)境為CentOS6.5 操作系統(tǒng),支持MPI 并行環(huán)境,使用gcc4.8,mpi4.0,mkl2019,程序采用C 語言編寫。試驗(yàn)聲吶頻率為70 kHz,通道數(shù)為256 通道,發(fā)射信號(hào)為HFM 信號(hào),信號(hào)降基帶后的采樣率30 kHz。在聲吶信號(hào)處理過程中,波束形成是比較耗時(shí)的操作,因此本文只對(duì)波束形成的執(zhí)行時(shí)間進(jìn)行統(tǒng)計(jì),波束形成采用頻域波束形成,共形成256 個(gè)波束。通過設(shè)置不同的進(jìn)程數(shù),比較MPI 和MPI+MKL 混合模型的運(yùn)行效率。
通過表1 可以看出,MPI+MKL 較單純使用MPI 提高了系統(tǒng)運(yùn)算效率。隨著進(jìn)程數(shù)的增加,進(jìn)程間的通信開銷增多,所以表中運(yùn)行時(shí)間沒有按比例減小。
表1 波束形成時(shí)間對(duì)比
本文通過對(duì)反蛙人聲吶信號(hào)處理的特點(diǎn)進(jìn)行了分析,構(gòu)建了基于MPI+MKL 的混合編程模型,結(jié)合了MPI 和MKL 的優(yōu)點(diǎn),實(shí)現(xiàn)了聲吶信號(hào)處理的兩級(jí)并行,并對(duì)其運(yùn)行效率進(jìn)行測(cè)試。測(cè)試結(jié)果表明,基于MPI+MKL 的混合模型具有較高的執(zhí)行效率,相比于單純使用MPI,可以提高運(yùn)算效率,減少計(jì)算資源,是一種高效可行的并行編程模型,能夠滿足反蛙人聲吶高采樣、多通道和復(fù)雜算法的實(shí)時(shí)處理要求。