基于GPU的數(shù)字信號論文
時間:2022-04-06 04:28:41
導(dǎo)語:基于GPU的數(shù)字信號論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
1信號處理中的相關(guān)函數(shù)
信號處理中許多信號都要進行相關(guān)性分析,牽涉到信號相關(guān)的問題往往都會涉及大型的數(shù)據(jù)集?;ハ嚓P(guān),也稱為“互協(xié)方差”。在智能信號處理相關(guān)領(lǐng)域中,是用來表示兩個信號之間相似性的一個度量。互相關(guān)性可以通過與確定信號比較,來尋找不確定信號的特性,它是確定信號與不確定信號之間相對于時間的一個函數(shù),也可以稱為滑動點積。在模式識別以及密碼分析學(xué)等很多領(lǐng)域,信號的互相關(guān)性都有廣泛的應(yīng)用[5]。
1.1相關(guān)函數(shù)的定義互相關(guān)是統(tǒng)計學(xué)中用來表示兩個隨機矢量X和Y之間的協(xié)方差cov(X,Y),與矢量X的“協(xié)方差”概念相區(qū)分,矢量X的“協(xié)方差”是X的各標(biāo)量成分之間的協(xié)方差矩陣。自相關(guān)是對信號相關(guān)程度的一種度量,也就是說自相關(guān)可以看作是信號與自身的延遲信號相乘后的乘積進行積分運算,隨機信號的自相關(guān)函數(shù)與其功率譜是傅氏變換對(隨機信號無法得到具體的函數(shù)表達式,只有其統(tǒng)計信息),通過對接受信號的自相關(guān)運算可以進行頻譜分析。同時,自相關(guān)在信號檢測中也有很重要的作用,是在誤碼最小原則下的最佳接收準(zhǔn)則[6]。
1.2信號處理中矩陣的相關(guān)性分析一個自適應(yīng)系統(tǒng)輸入的有用信號可以是確定信號或隨機信號,而輸入信號中不可避免的混有噪聲或干擾,在頻域考慮可能是窄帶的也可能是寬帶的[7]。一個自適應(yīng)系統(tǒng)的輸入信號和信號特性,通常對該系統(tǒng)的結(jié)構(gòu)和性能起重要作用,輸入信號用向量的形式表示,隱去時間函數(shù),則信號向量X可以表示為。矩陣分析作為一種重要的數(shù)學(xué)工具,在信號與信息處理領(lǐng)域起著不可替代的作用。由于在現(xiàn)代信號處理、圖像處理,以及通信相關(guān)領(lǐng)域中的操作和運算中,為了滿足性能需要,所以對數(shù)據(jù)的吞吐量有極高的要求,其中很多操作都必須實時完成,所以對相關(guān)算法的實現(xiàn)速度就有了很高的要求。在數(shù)字信號處理中,大部分處理信號和圖像的算法具有局部化、計算數(shù)據(jù)密集以及海量的矩陣運算等特點,所以為了提高算法的實現(xiàn)速度,尋找一種高速矩陣運算和高速密集型數(shù)據(jù)運算的方法對很多在數(shù)字信號處理中應(yīng)用的復(fù)雜算法是十分有意義的[8]。
2GPU上大型矩陣快速運算的具體實現(xiàn)
在GPU中實現(xiàn)矩陣的快速乘法時,不僅要保證運算的精度問題,同時,也要保證運算的效率,提高運算的速度。所以,根據(jù)GPU的硬件結(jié)構(gòu),應(yīng)該設(shè)計一種矩陣分塊和內(nèi)存分配方法[9],以便減少內(nèi)存的訪問次數(shù)。
2.1運算精度目前對于很多GPU來說,其只支持32b浮點數(shù)運算,所以在大量數(shù)據(jù)累加時,后面的數(shù)字位數(shù)一定被舍去過多,從而導(dǎo)致了運算結(jié)果的精度下降。而CUDA的浮點數(shù)運算是符合IEEE754運算精度標(biāo)準(zhǔn)的,因此,可以利用Kahan求和公式來提高運算的精度,具體流程偽代碼如下。雖然Kahan求和公式在優(yōu)化運算結(jié)果精度的同時增加了每個線程的運算量,但對于GPU來說,并沒有內(nèi)存存取的動作,所以對整體的運算效率影響很小,并且精度問題是整體運算結(jié)果的前提保證,所以這一步驟是十分必要的。
2.2矩陣分塊由于CUDA平臺一個線程塊只同時支持512個線程并行工作,所以只有當(dāng)內(nèi)存控制器從某個固定倍數(shù)地址開始讀取時,工作效率最高。解決這個問題最好的辦法就是將大矩陣分解為16×16的小矩陣,這樣每一個線程塊就同時使用256個線程并行計算。所以小矩陣就可以完全加載到高速共享內(nèi)存中,同時小矩陣自身乘法也不需要再存取外部內(nèi)存。為了方便進行線程塊的計算,對于兩個矩陣A和B,可以分別為每個線程塊分配16×16個線程,再建立(m/16)×(n/16)個線程塊。但是,由于參加運算的矩陣階不一定是16的倍數(shù),所以對于最后一次分塊,程序可以利用判斷語句來控制。即:如果本線程的矩陣塊沒有超出A、B的階數(shù),就進行分塊;如果超出,則只運算原始矩陣剩下的部分。
2.3內(nèi)存分配為了使GPU高效率工作,在矩陣A和B的分塊矩陣初始內(nèi)存空間時,直接把內(nèi)存大小配置成16的倍數(shù),并在復(fù)制矩陣到顯卡內(nèi)存之前,將其清零。這種處理方法充分利用了GPU的硬件結(jié)構(gòu)特點,滿足GPU高效率讀取內(nèi)存的原則[10]。并且,CUDA提供的cudaMallocPitch()函數(shù)就可以滿足該要求,它是一種節(jié)距分配,可以使分配的內(nèi)存在硬件中的節(jié)距對齊,以提高共享內(nèi)存的訪問速度,并返回指向已分配內(nèi)存的指針。
3實驗結(jié)果與分析
在進行信號相關(guān)性分析的時候,往往計算量比較大,隨著信號處理中矩陣的階數(shù)不斷增加,如果僅僅基于CPU的傳統(tǒng)的串行算法,大大增加了計算所耗費的時間。在進行矩陣的相關(guān)性分析計算的過程中,實驗環(huán)境配置見表1。分別對不同大小的一維矩陣進行相關(guān)性分析計算,矩陣的大小見表2。通過對矩陣A的列兩兩進行交叉相關(guān)性計算,產(chǎn)生一個一個大型矩陣輸出,然后分別得出計算不同矩陣大小情況下相關(guān)性計算CPU和gpu所耗費的時間,分析計算出加速比。對不同大小的二維矩陣進行相關(guān)性分析計算,矩陣的大小見表3。對其中一個矩陣固定其大小,另外一個矩陣不斷增大,對兩個矩陣做二維的相關(guān)性計算,分別得出其基于CPU和GPU的相關(guān)性計算所耗費的時間,分析計算出加速比。由實驗結(jié)果圖3、圖4可以得出,單一矩陣基于CPU和GPU進行相關(guān)性計算的的加速比最高達到了14.5倍,二維矩陣基于CPU和GPU進行相關(guān)性計算的加速比最高達到了5.3倍,二維矩陣的相關(guān)性計算涉及的數(shù)據(jù)量和計算量較大,通過計算時間可以看出基于GPU的相關(guān)性計算所耗費時間明顯少于基于CPU下的相關(guān)性計算。通過實驗對比可以得到隨著矩陣的不斷增大,進行相關(guān)性計算所用的時間不斷增加,基于CPU的傳統(tǒng)計算方式所耗費的時間增大幅度遠遠大于基于GPU的并行計算方式。因此基于GPU的并行加速數(shù)字信號處理中相關(guān)性算法效率明顯高于傳統(tǒng)的基于CPU的串行算法。
4結(jié)論
在進行信號相關(guān)性分析的時候,往往計算量比較大,隨著信號處理中矩陣的階數(shù)不斷增加,如果僅僅基于CPU的傳統(tǒng)的串行算法,大大增加了計算所耗費的時間。由實驗結(jié)果可以得出,隨著向量矩陣的不斷增加,GPU的計算優(yōu)勢越來越明顯,大大提高了計算的效率,產(chǎn)生更高的加速比,并且隨著矩陣的不斷增加,GPU計算所產(chǎn)生的加速比越來越明顯。在智能信號處理、數(shù)字通信、地質(zhì)、土地資源管理以及其他科學(xué)和工程領(lǐng)域中,都很廣泛的應(yīng)用到了信號的相關(guān)性分析技術(shù)。特別是在通信技術(shù)相關(guān)領(lǐng)域中,隨著無線信號頻率不斷的提高,對于信號處理的復(fù)雜性和計算密集性,傳統(tǒng)的DSP技術(shù)已經(jīng)不能滿足信號處理的實時性要求,隨著圖形處理器(GPU)性能的飛速發(fā)展,以及其在可編程方面最新的進步和強大的并行運算能力,所以現(xiàn)代GPU技術(shù)的發(fā)展給通信信號處理領(lǐng)域帶來了新的希望。
作者:索東高建瓴王恒單位:貴州大學(xué)電子信息學(xué)院
- 上一篇:逆變電路數(shù)字信號論文
- 下一篇:形象化數(shù)字信號論文