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