張道成
(解放軍92785部隊,秦皇島066200)
隨著信息技術(shù)的不斷發(fā)展,有限沖激響應(yīng)(FIR)濾波得到了越來越多的應(yīng)用,而圖形處理單元(GPU)的不斷發(fā)展使自身具備了強(qiáng)大的并行處理能力,利用其特性可以使信號在進(jìn)行并行濾波時得到很高的加速比。
GPU是指一個單芯片的處理器,近年來,隨著GPU可編程性的不斷提高,利用GPU來完成圖形渲染以外的通用計算得到了越來越多的應(yīng)用[1-3],眾多運(yùn)算密集型的應(yīng)用程序執(zhí)行速度已經(jīng)可以通過NVIDIA的GPU產(chǎn)品獲得令人矚目的提升。
式中:x(n)為輸入序列;y(n)為輸出序列;ak和bk為濾波器系數(shù);n為濾波器階數(shù)。
對式(1)進(jìn)行z變換,整理后可得FIR濾波器的傳遞函數(shù):
FIR數(shù)字濾波器一般具有如下差分方程:
FIR濾波器實(shí)現(xiàn)的方法很多,基于傅里葉變換的卷積定理,可利用快速傅里葉變換(FFT)實(shí)現(xiàn)輸入信號與FIR濾波器單位沖擊響應(yīng)序列的快速卷積運(yùn)算。每次從輸入信號樣點(diǎn)序列中截取一段進(jìn)行離散傅里葉變換(DFT)到頻域,然后將各個頻譜值乘以濾波器頻率響應(yīng)系數(shù),最后再進(jìn)行逆DFT變換到時域。
目前,統(tǒng)一計算設(shè)備架構(gòu)(CUDA)已實(shí)現(xiàn)了單幀信號的濾波,本文在此基礎(chǔ)上實(shí)現(xiàn)多幀信號并行FIR濾波。程序?qū)崿F(xiàn)時利用了CUDA中的CUDA快速傅里葉變換(CUFFT),在GPU上實(shí)現(xiàn)多幀信號FIR并行濾波過程如下:
(1)CPU初始化,即在CPU上為多幀信號分配空間,并為其賦值,同時需要為GPU所得計算結(jié)果分配空間,用于存儲最后的濾波結(jié)果。
(2)在GPU上為所要濾波的所有數(shù)據(jù)參量分配空間,并將CPU已經(jīng)賦值完畢的參數(shù)拷貝到GPU中,用于FIR濾波處理。
(3)在GPU中進(jìn)行線程劃分,然后調(diào)用核來進(jìn)行GPU上的FIR濾波[4]。
系統(tǒng)測試環(huán)境如表1所示。
表1 系統(tǒng)測試環(huán)境
根據(jù)以上所述,隨機(jī)產(chǎn)生了不同長度、多個批次的多幀信號,并對多幀信號進(jìn)行了濾波。表2是當(dāng)幀長度取512、濾波器階數(shù)為11、幀批次取500時所給的數(shù)據(jù)。為了節(jié)省篇幅,取前5個數(shù)據(jù)的分別采取C、MATLAB2010b、GPU不同方式濾波的計算結(jié)果(其中輸入的數(shù)據(jù)為1~512 500的整數(shù)),同時給出了CPU、MATLAB2010b和GPU的運(yùn)算精度并進(jìn)行了對比。
表2 GPU、CPU和MATLAB的計算精度
從表2中的6組數(shù)據(jù)顯示可以看出,數(shù)據(jù)分別在GPU、CPU和 MATLAB2010b的計算結(jié)果中。GPU與另外2個的計算結(jié)果相比較,均存在著一定的誤差,但是誤差完全符合精度的要求,滿足原算法的基本需求。
表3分別給出了不同幀信號的濾波時間結(jié)果,其中表格的數(shù)據(jù)均是采取了連續(xù)10次運(yùn)算后的平均結(jié)果,為了更清晰地看出GPU運(yùn)算時間結(jié)果的優(yōu)越性,將表3中的數(shù)據(jù)繪成圖1和圖2。
由表3和圖1、2可看出,基于MATLAB進(jìn)行FIR處理時,隨著幀長度和幀數(shù)的增加,處理所需的時間增長很快,而基于GPU的FIR處理所用時間增長卻不是很明顯。在數(shù)據(jù)長度較短、處理幀數(shù)不多的時候,GPU進(jìn)行并行濾波的運(yùn)算時間的優(yōu)勢并不很明顯,因?yàn)閿?shù)據(jù)在內(nèi)存與顯存之間拷貝需要占據(jù)一定的時間,時延沒有得到很好的隱藏[5]。隨著數(shù)據(jù)長度和并行處理批次的不斷增加,其運(yùn)算時間的優(yōu)勢也越來越明顯。但是最終加速比并不是很高,這是因?yàn)樗惴ㄔ诔绦驅(qū)崿F(xiàn)中的優(yōu)化過程沒有得到最佳。但是隨著輸入信號數(shù)據(jù)長度和幀數(shù)達(dá)到一定的時候,將不再適合應(yīng)用GPU運(yùn)算,因?yàn)橐殉^了其顯存大小,這是由GPU硬件資源決定的。
表3 不同幀信號的濾波時間(單位:ms)
圖1 GPU與CPU濾波處理時間圖
圖2 GPU與MATLAB2010b濾波處理時間加速比圖
本文基于CUDA實(shí)現(xiàn)了多幀信號的并行FIR濾波,試驗(yàn)結(jié)果表明,在采用CUDA并行實(shí)現(xiàn)后,數(shù)據(jù)處理速度得到了進(jìn)一步提升,也證明了GPU良好的并行處理能力和浮點(diǎn)計算能力,進(jìn)一步驗(yàn)證了采用GPU實(shí)現(xiàn)通用計算的可行性。
[1]楊曉玲.基于GPU的LBM方法計算研究[D].上海:上海大學(xué),2008.
[2]王海華.基于GPU的合成孔徑雷達(dá)回波仿真技術(shù)研究[D].成都:電子科技大學(xué),2009.
[3]韓博,周秉鋒.GPGPU性能模型及應(yīng)用實(shí)例分析[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2009(9):23-36.
[4]張舒,褚艷麗,趙開勇,張鈺勃.GPU高性能運(yùn)算之CUDA[M].北京:中國水利水電出版社,2009.
[5]Dmitri Yudanov,Muhammad Shaaban,Roy Melton.Leon Reznik.GPU-based simulation of spiking neural networks with real-time performance & high accuracy[A].IEEE International Joint Conference on Digital Object[C],Barcelona,2010:1-8.