席宁
【摘要】 本文基于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