论文部分内容阅读
摘 要 随着信息科学技术的发展,快速傅里叶变换已成为当今极其重要的学科和技术领域之一,得到了广泛应用,而GPU强大的浮点计算能力和数据并行处理能力,在数字信号处理等方面得到了越来越多的应用,也带来了很大的加速比。
关键词 GPU FFT 并行
中图分类号 TP3 文献标识码 A
0 引 言 快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法,现已成为数字信号处理的强有力工具。计算机图形处理器(Graphics Processing Unit,GPU)是指一个单芯片的处理器,近年来,随着GPU可编程性的不断提高,利用GPU来完成图形渲染以外的通用计算得到了越来越多的应用。
1 GPU的发展概况
计算机图形处理器(Graphics Processing Unit,GPU)是指一个单芯片的处理器,近年来,随着GPU可编程性的不断提高,利用GPU来完成图形渲染以外的通用计算得到了越来越多的应用,众多运算密集型的应用程序执行速度已经可以通过NVIDIA的GPU产品获得令人瞩目的提升。
2 快速傅里叶变换(FFT)
快速傅里叶变换(FFT)是计算离散傅里叶变换(DFT)的快速算法,直接计算有限长为的序列的DFT的公式为:
(1.1)
其逆变换为: (1.2)
其中: (1.3)
(1.4)
3 多帧信号的FFT在GPU的并行实现
目前,NVIDIA公司生产的CUDA软件包中集成了标准的傅立叶变换库——CUFFT,为科研人员提供了方便。使用CUFFT库的过程如下:
1.建立cufftHandle类型的对象,将数据拷贝到显存;
2.选择FFT使用的对象,根据自己需要确定使用哪一个函数,本文选择的复数转向复数型的多帧信号一维FFT变换,采用的是cufftExecC2C类型的函数。
3.完成变换,将变换后的数据拷贝回内存。
系统测试环境如下表1所示
表1 系统测试环境
4 试验结果与分析比较
表2分别为不同长度的信号和不同帧的数量时,多帧信号的一维FFT的GPU并行计算结果时间和MATLAB计算结果,其中每次结果都是系统运行10次以上测量取平均值的结果。同时将随机一帧的结果的精度给出表格3。为了明显看出结果,将表3中的数据取了10倍的对数取其数据制成图1,同时把加速比的比值直接绘制成下图2所示。
表2 多帧信号的一维FFT运算时间(单位:ms)
表3 GPU和MATLAB运算一维FFT的精度
根据上述试验测试显示,多帧信号在并行计算一维FFT时,在CPU和在GPU上的运行速度是有着明显不同效果的,当帧数和信号长度较小时,其运算速度没有较大的提高,这是因为数据在内存和显存之间的拷贝时间占据了较长的时间,内存的延迟得不到很好的隐藏,但是随着帧数和信号长度的增加,在GPU上运行速度明显提高,其加速比甚至达到了数千倍乃至万倍的提高,这是因为随着长度和帧数的增加,GPU和CPU之间拷贝的时间变化的不是很明显。
参 考 文 献
[1] NVIDIA CUDA 编程指南版本4.0.
[2] 杨晓玲. 基于GPU的LBM方法计算研究[D]. 上海: 上海大学, 2008.
[3] 王海华. 基于GPU的合成孔径雷达回波仿真技术研究[D]. 成都: 电子科技大学, 2009.
[4] 韩博, 周秉锋. GPGPU性能模型及应用实例分析. 计算机辅助设计与图形学学报, 2009.09.
[5] 张舒, 褚艳丽, 赵开勇, 张钰勃. GPU高性能运算之CUDA[M]. 北京: 中国水利水电出版社, 2009.
关键词 GPU FFT 并行
中图分类号 TP3 文献标识码 A
0 引 言 快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法,现已成为数字信号处理的强有力工具。计算机图形处理器(Graphics Processing Unit,GPU)是指一个单芯片的处理器,近年来,随着GPU可编程性的不断提高,利用GPU来完成图形渲染以外的通用计算得到了越来越多的应用。
1 GPU的发展概况
计算机图形处理器(Graphics Processing Unit,GPU)是指一个单芯片的处理器,近年来,随着GPU可编程性的不断提高,利用GPU来完成图形渲染以外的通用计算得到了越来越多的应用,众多运算密集型的应用程序执行速度已经可以通过NVIDIA的GPU产品获得令人瞩目的提升。
2 快速傅里叶变换(FFT)
快速傅里叶变换(FFT)是计算离散傅里叶变换(DFT)的快速算法,直接计算有限长为的序列的DFT的公式为:
(1.1)
其逆变换为: (1.2)
其中: (1.3)
(1.4)
3 多帧信号的FFT在GPU的并行实现
目前,NVIDIA公司生产的CUDA软件包中集成了标准的傅立叶变换库——CUFFT,为科研人员提供了方便。使用CUFFT库的过程如下:
1.建立cufftHandle类型的对象,将数据拷贝到显存;
2.选择FFT使用的对象,根据自己需要确定使用哪一个函数,本文选择的复数转向复数型的多帧信号一维FFT变换,采用的是cufftExecC2C类型的函数。
3.完成变换,将变换后的数据拷贝回内存。
系统测试环境如下表1所示
表1 系统测试环境
4 试验结果与分析比较
表2分别为不同长度的信号和不同帧的数量时,多帧信号的一维FFT的GPU并行计算结果时间和MATLAB计算结果,其中每次结果都是系统运行10次以上测量取平均值的结果。同时将随机一帧的结果的精度给出表格3。为了明显看出结果,将表3中的数据取了10倍的对数取其数据制成图1,同时把加速比的比值直接绘制成下图2所示。
表2 多帧信号的一维FFT运算时间(单位:ms)
表3 GPU和MATLAB运算一维FFT的精度
根据上述试验测试显示,多帧信号在并行计算一维FFT时,在CPU和在GPU上的运行速度是有着明显不同效果的,当帧数和信号长度较小时,其运算速度没有较大的提高,这是因为数据在内存和显存之间的拷贝时间占据了较长的时间,内存的延迟得不到很好的隐藏,但是随着帧数和信号长度的增加,在GPU上运行速度明显提高,其加速比甚至达到了数千倍乃至万倍的提高,这是因为随着长度和帧数的增加,GPU和CPU之间拷贝的时间变化的不是很明显。
参 考 文 献
[1] NVIDIA CUDA 编程指南版本4.0.
[2] 杨晓玲. 基于GPU的LBM方法计算研究[D]. 上海: 上海大学, 2008.
[3] 王海华. 基于GPU的合成孔径雷达回波仿真技术研究[D]. 成都: 电子科技大学, 2009.
[4] 韩博, 周秉锋. GPGPU性能模型及应用实例分析. 计算机辅助设计与图形学学报, 2009.09.
[5] 张舒, 褚艳丽, 赵开勇, 张钰勃. GPU高性能运算之CUDA[M]. 北京: 中国水利水电出版社, 2009.