張德澤 范威
(水聲對(duì)抗技術(shù)重點(diǎn)實(shí)驗(yàn)室,上海,201108)
寬帶信號(hào)的廣泛應(yīng)用與陣列規(guī)模的擴(kuò)大使得水聲信號(hào)處理中的數(shù)據(jù)量不斷增加,高效計(jì)算問(wèn)題逐漸成為制約水聲信號(hào)處理發(fā)展的關(guān)鍵技術(shù)難題之一。陣列信號(hào)的波束形成算法就是其中典型的大規(guī)模計(jì)算問(wèn)題,多基元陣列信號(hào)數(shù)據(jù)量巨大,計(jì)算復(fù)雜的特點(diǎn)使其很難在常規(guī) CPU平臺(tái)上實(shí)現(xiàn)高效處理,而采用DSP元件的信號(hào)處理機(jī)等設(shè)備雖然滿足計(jì)算資源需求,但卻具有成本高昂,開發(fā)難度較大,升級(jí)困難等缺點(diǎn)[1]。GPU是一種高效的通用平臺(tái)并行計(jì)算協(xié)處理器,利用 GPU并行計(jì)算加速水聲信號(hào)的處理是當(dāng)前的研究熱點(diǎn)之一。相對(duì)于 DSP或FPGA,GPU平臺(tái)具有通用性強(qiáng)、易開發(fā)和易升級(jí)等優(yōu)勢(shì),且可與CPU形成異構(gòu)計(jì)算,進(jìn)一步提升數(shù)據(jù)處理效率[2]。本文基于NVIDIA公司生產(chǎn)的GPU平臺(tái)與CUDA編程模型,實(shí)現(xiàn)了線陣信號(hào)的頻域?qū)拵Рㄊ纬伤惴ā?/p>
波束形成的主要功能是對(duì)信號(hào)進(jìn)行空域?yàn)V波,提高信號(hào)的信噪比,估計(jì)信號(hào)方位[3]。在時(shí)域上,波束形成算法是一種卷積運(yùn)算,根據(jù)線性系統(tǒng)理論,可將其轉(zhuǎn)化到頻域變?yōu)槌朔e運(yùn)算。圖1為頻域?qū)拵Рㄊ纬伤惴ㄔ韀4]。
設(shè)各陣元原始輸入信號(hào)為[x1(t),x2(t),…xN(t)],其中N為陣元數(shù)。算法第一步采用傅里葉變換將各陣元的時(shí)域信號(hào)轉(zhuǎn)換到頻域,得到信號(hào)頻率分量:
式中,k為頻域數(shù)據(jù)點(diǎn),k=0,… ,L- 1,l為時(shí)域數(shù)據(jù)點(diǎn),L為每段數(shù)據(jù)總點(diǎn)數(shù)。
圖1 頻域?qū)拵Рㄊ纬?/p>
隨后計(jì)算陣列信號(hào)在各方位角和各頻點(diǎn)處的相位偏移矩陣。對(duì)于線陣而言,其在頻率點(diǎn)k、方位角θi處的相位偏移為
式中,N為陣元總數(shù),d為布陣間隔,fk為第k個(gè)頻點(diǎn)所對(duì)應(yīng)的頻率。設(shè)波束總數(shù)為M,則波束域頻域數(shù)據(jù)為
式中,L為數(shù)據(jù)長(zhǎng)度。得到波束域頻域數(shù)據(jù)后,再對(duì)其進(jìn)行傅里葉逆變換,即可得到波束形成結(jié)果。
從算法原理中可以看到,寬帶波束形成算法中主要的步驟是對(duì)各陣元的信號(hào)在各個(gè)方位角和頻點(diǎn)上進(jìn)行相移,這一步運(yùn)算涉及方位角與頻率的兩重循環(huán),是最主要的計(jì)算開銷,使該部分運(yùn)算并行化是提高算法效率的關(guān)鍵。
GPU作為一種多核心協(xié)處理器,在大規(guī)模計(jì)算方面展現(xiàn)出了優(yōu)異的性能。從NVIDIA公司發(fā)布第一款 GPU以來(lái),其一直保持著很高的發(fā)展速度。當(dāng)前其浮點(diǎn)運(yùn)算性能已經(jīng)遠(yuǎn)超多路CPU系統(tǒng),是密集型大規(guī)模數(shù)據(jù)計(jì)算的首選[5]。NVIDIA GPU的編程開發(fā)環(huán)境為CUDA,支持C、C++、Fortran等多種編程語(yǔ)言。其編程模型如圖2所示。
圖2 CUDA 線程模型
圖2中,CPU端為Host,GPU端為device。在GPU上運(yùn)行的函數(shù)為kernel函數(shù),每一個(gè)kernel函數(shù)對(duì)應(yīng)一個(gè) grid,每個(gè) grid中包含了一定數(shù)量的block,每個(gè)block中包含一定數(shù)量的thread,數(shù)量大小可自行設(shè)置。每個(gè)block與thread在程序中均有對(duì)應(yīng)編號(hào)。程序運(yùn)行時(shí),每一個(gè)thread按照kernel函數(shù)的指令運(yùn)行相同的步驟,完成并行運(yùn)算。每一個(gè)thread在硬件端對(duì)應(yīng)GPU中的一個(gè)流處理器。GPU中包含上千個(gè)流處理器,因此可迅速完成大規(guī)模的數(shù)據(jù)計(jì)算。
寬帶波束形成的主要計(jì)算開銷在于頻率點(diǎn)和角度點(diǎn)的循環(huán)。而 GPU可將循環(huán)并行化,大幅縮短計(jì)算時(shí)間。圖3展示了波束形成并行化的原理。設(shè)波束形成計(jì)算中的計(jì)算頻點(diǎn)共L個(gè),計(jì)算時(shí)開啟L個(gè)block,圖3顯示的是第k個(gè)block中的計(jì)算過(guò)程。每個(gè)block中包含N個(gè)thread,與陣元數(shù)一致。波束總數(shù)共M個(gè),從θ1到θM。Data(n,k)為第n個(gè)陣元在頻點(diǎn)k的頻域數(shù)據(jù),n=1-N,k=1-L。D(n,θi,k)為第n個(gè)陣元在θi方位向和頻點(diǎn)k處的相移,i= 1-M。
圖3 波束形成并行化
并行化的波束形成算法中,每一個(gè)block負(fù)責(zé)計(jì)算每個(gè)頻點(diǎn)的各通道數(shù)據(jù)相移,block中的所有thread負(fù)責(zé)計(jì)算每個(gè)通道數(shù)據(jù)點(diǎn)與相移量的內(nèi)積。根據(jù)頻點(diǎn)的數(shù)量設(shè)置block的數(shù)量,可同時(shí)對(duì)所有頻點(diǎn)數(shù)據(jù)進(jìn)行計(jì)算。而在block內(nèi)部,每次可對(duì)一個(gè)方位角上的所有陣元數(shù)據(jù)進(jìn)行相移并歸約求和。這樣就可將算法中方位、頻點(diǎn)、陣元的三重循環(huán)減少為僅方位上的單層循環(huán),大幅提高計(jì)算效率。數(shù)據(jù)的傅里葉變換可采用CUDA中的cuFFT庫(kù)進(jìn)行[6]。
測(cè)試采用仿真數(shù)據(jù),分別計(jì)算在不同數(shù)據(jù)長(zhǎng)度的情況下,寬帶常規(guī)頻域波束形成在 CPU串行程序、CPU并行程序、GPU單block并行程序與GPU多block并行程序中的時(shí)間開銷。仿真數(shù)據(jù)采樣率為4096 Hz,波束形成處理帶寬為10 Hz~1 kHz,陣列為128元線陣。測(cè)試平臺(tái)CPU為雙路Intel Xeon Gold 6136,共計(jì)24核48線程。GPU為NVIDIA Quadro RTX 5000。圖4與表1為各程序在不同信號(hào)長(zhǎng)度下的運(yùn)行時(shí)間對(duì)比,其中 CPU程序在 Matlab R2019下運(yùn)行,GPU程序在Visual Studio 2013下運(yùn)行。
圖4 波束形成耗時(shí)曲線
表1 波束形成算法耗時(shí) s
從圖4與表1中可以看到,并行化對(duì)波束形成算法的計(jì)算效率提升巨大。CPU并行的效率約為其串行的3倍。而GPU平臺(tái)得益于其巨大的核心數(shù)量,效率遠(yuǎn)優(yōu)于CPU平臺(tái)。在僅開啟一個(gè)block、128個(gè)thread的情況下,其計(jì)算效率為CPU并行的5~6倍。而在開啟多個(gè)block,對(duì)頻點(diǎn)進(jìn)行并行運(yùn)算時(shí),效率得到了進(jìn)一步提升,最大可達(dá)到CPU并行的50倍
從表中數(shù)據(jù)還能看到,GPU運(yùn)算的效率提升隨著數(shù)據(jù)長(zhǎng)度的增加而越發(fā)明顯。這證明,GPU平臺(tái)對(duì)于大規(guī)模數(shù)據(jù)計(jì)算具有極大的優(yōu)勢(shì)。因此,在保證顯存空間足夠的條件下,GPU可顯著提高陣列信號(hào)波束形成的計(jì)算速度,且開啟的核心越多,數(shù)據(jù)量越大,加速效果越好。而在數(shù)據(jù)量較小時(shí),GPU程序的數(shù)據(jù)傳輸時(shí)間開銷相對(duì)較大,因此效率提升程度有所下降。
本文基于CUDA編程,在GPU平臺(tái)上實(shí)現(xiàn)了頻域?qū)拵Рㄊ纬伤惴ǖ牟⑿谢?,其?jì)算效率相對(duì)于 CPU平臺(tái)有顯著提升,在數(shù)據(jù)量較大時(shí),在本文所述硬件配置下其效率最高可達(dá)到 CPU并行計(jì)算的50倍。GPU平臺(tái)相對(duì)于DSP和FPGA,具有低成本、易開發(fā)、易升級(jí)等多種優(yōu)勢(shì),適合作為小型化的信號(hào)處理平臺(tái)。后續(xù)工作將針對(duì)自適應(yīng)波束形成等高分辨波束形成算法的并行化展開,進(jìn)一步提高算法的效率及精度。