基于GPU的數字信號論文

時間:2022-04-06 04:28:41

導語:基于GPU的數字信號論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

基于GPU的數字信號論文

1信號處理中的相關函數

信號處理中許多信號都要進行相關性分析,牽涉到信號相關的問題往往都會涉及大型的數據集。互相關,也稱為“互協方差”。在智能信號處理相關領域中,是用來表示兩個信號之間相似性的一個度量。互相關性可以通過與確定信號比較,來尋找不確定信號的特性,它是確定信號與不確定信號之間相對于時間的一個函數,也可以稱為滑動點積。在模式識別以及密碼分析學等很多領域,信號的互相關性都有廣泛的應用[5]。

1.1相關函數的定義互相關是統計學中用來表示兩個隨機矢量X和Y之間的協方差cov(X,Y),與矢量X的“協方差”概念相區分,矢量X的“協方差”是X的各標量成分之間的協方差矩陣。自相關是對信號相關程度的一種度量,也就是說自相關可以看作是信號與自身的延遲信號相乘后的乘積進行積分運算,隨機信號的自相關函數與其功率譜是傅氏變換對(隨機信號無法得到具體的函數表達式,只有其統計信息),通過對接受信號的自相關運算可以進行頻譜分析。同時,自相關在信號檢測中也有很重要的作用,是在誤碼最小原則下的最佳接收準則[6]。

1.2信號處理中矩陣的相關性分析一個自適應系統輸入的有用信號可以是確定信號或隨機信號,而輸入信號中不可避免的混有噪聲或干擾,在頻域考慮可能是窄帶的也可能是寬帶的[7]。一個自適應系統的輸入信號和信號特性,通常對該系統的結構和性能起重要作用,輸入信號用向量的形式表示,隱去時間函數,則信號向量X可以表示為。矩陣分析作為一種重要的數學工具,在信號與信息處理領域起著不可替代的作用。由于在現代信號處理、圖像處理,以及通信相關領域中的操作和運算中,為了滿足性能需要,所以對數據的吞吐量有極高的要求,其中很多操作都必須實時完成,所以對相關算法的實現速度就有了很高的要求。在數字信號處理中,大部分處理信號和圖像的算法具有局部化、計算數據密集以及海量的矩陣運算等特點,所以為了提高算法的實現速度,尋找一種高速矩陣運算和高速密集型數據運算的方法對很多在數字信號處理中應用的復雜算法是十分有意義的[8]。

2GPU上大型矩陣快速運算的具體實現

在GPU中實現矩陣的快速乘法時,不僅要保證運算的精度問題,同時,也要保證運算的效率,提高運算的速度。所以,根據GPU的硬件結構,應該設計一種矩陣分塊和內存分配方法[9],以便減少內存的訪問次數。

2.1運算精度目前對于很多GPU來說,其只支持32b浮點數運算,所以在大量數據累加時,后面的數字位數一定被舍去過多,從而導致了運算結果的精度下降。而CUDA的浮點數運算是符合IEEE754運算精度標準的,因此,可以利用Kahan求和公式來提高運算的精度,具體流程偽代碼如下。雖然Kahan求和公式在優化運算結果精度的同時增加了每個線程的運算量,但對于GPU來說,并沒有內存存取的動作,所以對整體的運算效率影響很小,并且精度問題是整體運算結果的前提保證,所以這一步驟是十分必要的。

2.2矩陣分塊由于CUDA平臺一個線程塊只同時支持512個線程并行工作,所以只有當內存控制器從某個固定倍數地址開始讀取時,工作效率最高。解決這個問題最好的辦法就是將大矩陣分解為16×16的小矩陣,這樣每一個線程塊就同時使用256個線程并行計算。所以小矩陣就可以完全加載到高速共享內存中,同時小矩陣自身乘法也不需要再存取外部內存。為了方便進行線程塊的計算,對于兩個矩陣A和B,可以分別為每個線程塊分配16×16個線程,再建立(m/16)×(n/16)個線程塊。但是,由于參加運算的矩陣階不一定是16的倍數,所以對于最后一次分塊,程序可以利用判斷語句來控制。即:如果本線程的矩陣塊沒有超出A、B的階數,就進行分塊;如果超出,則只運算原始矩陣剩下的部分。

2.3內存分配為了使GPU高效率工作,在矩陣A和B的分塊矩陣初始內存空間時,直接把內存大小配置成16的倍數,并在復制矩陣到顯卡內存之前,將其清零。這種處理方法充分利用了GPU的硬件結構特點,滿足GPU高效率讀取內存的原則[10]。并且,CUDA提供的cudaMallocPitch()函數就可以滿足該要求,它是一種節距分配,可以使分配的內存在硬件中的節距對齊,以提高共享內存的訪問速度,并返回指向已分配內存的指針。

3實驗結果與分析

在進行信號相關性分析的時候,往往計算量比較大,隨著信號處理中矩陣的階數不斷增加,如果僅僅基于CPU的傳統的串行算法,大大增加了計算所耗費的時間。在進行矩陣的相關性分析計算的過程中,實驗環境配置見表1。分別對不同大小的一維矩陣進行相關性分析計算,矩陣的大小見表2。通過對矩陣A的列兩兩進行交叉相關性計算,產生一個一個大型矩陣輸出,然后分別得出計算不同矩陣大小情況下相關性計算CPU和gpu所耗費的時間,分析計算出加速比。對不同大小的二維矩陣進行相關性分析計算,矩陣的大小見表3。對其中一個矩陣固定其大小,另外一個矩陣不斷增大,對兩個矩陣做二維的相關性計算,分別得出其基于CPU和GPU的相關性計算所耗費的時間,分析計算出加速比。由實驗結果圖3、圖4可以得出,單一矩陣基于CPU和GPU進行相關性計算的的加速比最高達到了14.5倍,二維矩陣基于CPU和GPU進行相關性計算的加速比最高達到了5.3倍,二維矩陣的相關性計算涉及的數據量和計算量較大,通過計算時間可以看出基于GPU的相關性計算所耗費時間明顯少于基于CPU下的相關性計算。通過實驗對比可以得到隨著矩陣的不斷增大,進行相關性計算所用的時間不斷增加,基于CPU的傳統計算方式所耗費的時間增大幅度遠遠大于基于GPU的并行計算方式。因此基于GPU的并行加速數字信號處理中相關性算法效率明顯高于傳統的基于CPU的串行算法。

4結論

在進行信號相關性分析的時候,往往計算量比較大,隨著信號處理中矩陣的階數不斷增加,如果僅僅基于CPU的傳統的串行算法,大大增加了計算所耗費的時間。由實驗結果可以得出,隨著向量矩陣的不斷增加,GPU的計算優勢越來越明顯,大大提高了計算的效率,產生更高的加速比,并且隨著矩陣的不斷增加,GPU計算所產生的加速比越來越明顯。在智能信號處理、數字通信、地質、土地資源管理以及其他科學和工程領域中,都很廣泛的應用到了信號的相關性分析技術。特別是在通信技術相關領域中,隨著無線信號頻率不斷的提高,對于信號處理的復雜性和計算密集性,傳統的DSP技術已經不能滿足信號處理的實時性要求,隨著圖形處理器(GPU)性能的飛速發展,以及其在可編程方面最新的進步和強大的并行運算能力,所以現代GPU技術的發展給通信信號處理領域帶來了新的希望。

作者:索東高建瓴王恒單位:貴州大學電子信息學院