席寧
【摘要】 本文基于NVIDIA公司的CUDA平臺,提出將CUDA技術的通用計算能力應用到虛擬無線電的數據處理中,提高系統的數據處理能力,通過與CPU平臺作對比進行性能的分析和比較得出,通過擴展GPU板卡可以有效的提高工作站的計算能力,可以有效的減少虛擬無線電計算機集群中處理節點計算機的數量,可以減小系統體積和系統成本。
【關鍵詞】 CUDA GPU FFT 傅里葉變換
一、試驗方案的選擇
考慮到試驗方案要有比較高的計算密度,使CPU和GPU滿負荷的工作,能更好的比較兩者在滿負荷最大計算能力的差別,所以在仿真實驗中選擇了FFT快速傅里葉變換作為一個高密度乘法和加法運算任務交給CPU和GPU做處理,并比較兩者在相同乘法和加法運算量下的計算能力表現。
二、基于CUDA技術實現GPU通用計算與CPU的性能比較
GPU的CUDA技術非常適合大數據量的并行計算,通過在MATLAB仿真環境下對FFT快速傅里葉變換計算速度的比較,觀察NVIDIA公司新技術CUDA對FFT算法的加速效果,發現存在的問題和作出分析。
2.1 試驗方案和試驗條件
在使用MATLAB仿真之前,需要安裝最新的驅動程序和CUDA工具包和CUDA的SDK包。安裝NVIDIA公司提供的插件Matlab_CUDA1.1后,即可在MATLAB的開發環境里調用GPU的硬件資源進行計算。
2.2 CUDA架構下程序流程
仿真程序將做二維N階隨機矩陣的FFT快速傅里葉變換,程序調用了CUFFT庫中的cufftExecC2C(cufftHandle plan,cufftComplex *idata,cufftComplex *odata,int direction)基于復數的快速傅里葉變換函數實現FFT計算,不同的N將得有不同的計算速度,可以得到使用CUDA技術時的計算時間,同時與不使用CUDA的基于CPU的計算時間比較,觀察CUDA對FFT的加速效果。
2.3 試驗方法
由于CUDA技術比較適合并行計算,仿真程序將FFT的以不同的點數計算結果作比較,觀察CPU和GPU在N取不同值時的表現。為了排除平臺中其他程序的運行造成的對結果的影響,在MATLAB的仿真環境中,使用CPU計算的時候直接調用了MATLAB的二維快速傅里葉變化函數fft2(),使用GPU計算時適用了程序fft2withcudaacc(),該函數通過MATLAB的MEX功能接口調用了CUFFT的快速傅里葉變換函數cufftExecC2C。
三、試驗結果分析
仿真平臺采用主流PC平臺THINKPAD SL400電腦,其CPU是INTEL酷睿二代雙核處理器T5870,GPU是NVIDIA GeForce G 105M,GPU擁有8個處理核心。
計算二維128、512、1024和2048階隨機矩陣的FFT。利用MATLAB的計時功能函數(tic,toc),實現對快速傅里葉變換的計時。在試驗中發現,當處理的數據比較小時,基于GPU和基于CPU的二維快速傅里葉變換速度沒有太大區別,這是因為這時候的數據量沒有使GPU和CPU滿負荷功能工作,不能很好的體現兩者的區別,但是當提高二維隨即矩陣的階數時,隨著數據量的增大,基于GPU和基于CPU的計算速度有了區別,說明當兩者滿負荷工作的時候,基于GPU的數據處理由于啟用的多線程并行處理,可以實現高度的并行操作,可以在較短的時間內完成數據的處理。從MATLAB的仿真結果來看,使用CUDA架構的GPU對數字信號處理中的FFT快速傅里葉變換有著比較明顯的加速效果。
四、小結
在仿真實驗中,選擇了具有高密度乘法和加法運算的FFT快速傅里葉變換,觀察CPU和GPU在高密度乘法加法運算上的計算能力,即使GPU板卡的運算速度等于CPU的計算速度,在實際的應用中也會有很好的應用價值。仿真所得出的結果是GPU板卡比CPU處理相等數據量的乘法和加法運算要快三倍以上,就是說如果在工作站中擴展兩塊GPU板卡,GPU的計算能力將是CPU的六倍以上。如果是在計算機集群中,一臺工作站安裝了兩塊板卡就可以節省多臺計算機節點,這樣在虛擬無線電的集群計算機中,就可以明顯的減少計算節點的數量。節省大量的財力,達到降低成本和系統體積的目的。
參 考 文 獻
[1] Blackfin Embedded Processor BF537 Data Sheet,ANALOG DEVICES,February 2009
[2] 張道興. 超寬帶通信捕獲FFT算法的設計和實現. 哈爾濱工程大學碩士學位論文. 2008
[3] 胡德俊. FFT處理器的設計與實現. 合肥工業大學碩士學位論文. 2006
[4] 姜進東. 高速FFT的FPGA實現. 西安電子科技大學碩士學位論文. 2009