[发明专利]基于GPU众核平台的FFT并行方法无效
| 申请号: | 200910088373.8 | 申请日: | 2009-07-02 |
| 公开(公告)号: | CN101937422A | 公开(公告)日: | 2011-01-05 |
| 发明(设计)人: | 姚迪;龙腾;靳星星;刘峰 | 申请(专利权)人: | 北京理工大学 |
| 主分类号: | G06F17/14 | 分类号: | G06F17/14;G06F15/167 |
| 代理公司: | 北京理工大学专利中心 11120 | 代理人: | 张利萍 |
| 地址: | 100081 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 gpu 平台 fft 并行 方法 | ||
技术领域
本发明涉及一种基于GPU众核平台的FFT并行方法,以及在工程实践中的应用。
背景技术
FFT,即快速傅立叶变换,在工程中大量使用,是影响工程效率的重要因素。虽然目前已经有各种各样的不同的算法来实现FFT,但是它们均是在CPU上进行串行处理。CPU作为传统的核心处理器,其强大的指令控制和数据处理能力不容置疑,但是,因为CPU芯片的将近75%的面积都要用来做存储,因此其集成度比较低,目前做的较为卓越的也就是IBM和SONY共同推出的8核处理器:CELL。而近年来,图形处理器(GPU)性能得到大幅度提高,与CPU不同,GPU是一个并行的向量处理器,可以集成成百上千个处理核心,并且以单指令多数据模式(SIMD)工作,因此具有强大的并行计算能力。但是目前还很少在这种含有成百上千个处理核心的具有强大计算能力的GPU上面并行实现FFT运算。
发明内容
本发明所要解决的技术问题是提供一种基于GPU众核平台的FFT并行方法,能够在包含成百上千个处理核心的GPU上并行、高效的实现FFT运算以及在工程中应用。
该基于众核平台的FFT并行方法包括以下步骤:
第一步:将需要进行一维FFT运算的N个一维数组(每个数组有M个元素)分别标识为:A1、A2…An,然后将N个一维数组按照标识符从小到大的次序首尾相接组成一个一维数组,记为B;
第二步:计算B所占存储空间的大小,并标识为C;
第三步:根据计算出的C,在GPU的全局存储器上分配大小为C的存储空间,标识为D,然后将内存上的数据B拷贝到全局存储器的D;
第四步:将D的数据每M个元素进行一次切割,得到与原始数据对应的N组数据,分别标识为D1、D2…Dn;
第五步:GPU组织包括线程网格层、线程块层、线程层,即一个线程网格包含两个或两个以上线程块,每个线程块包含两个或两个以上线程,同时,每个线程块有一个该线程块内所有线程可见的共享存储器;设定完成所有运算的线程网格有N个线程块,分别标识为E1、E2…En,将数据D1、D2…Dn分别对应导入E1、E2…En的共享存储器;
第六步:在每个线程块内部,将属于该线程块的共享存储器的原始数据进行FFT运算,结果同样保存在该线程块的共享存储器中;N个线程块执行同样的操作;
第七步:同步每个线程块内的所有线程,然后将每个线程块内共享存储器的运算结果对应的导出到D1、D2…Dn;将D1到Dn的结果数据首尾相接,组成一维数组,标识为F;然后将F的数据拷贝到内存,标识为G;
第八步:将一维数组G每M个元素进行一次切割,依次分为G1、G2…Gn,即是要进行一维M点FFT运算的N个一维数组的N个对应的结果。
通过以上步骤就完成了基于GPU众核平台的FFT并行方法。
本发明的有益效果:
1、通过科学的统筹安排,成百上千个处理核心并行处理数据,最大限度的提高了并行度,高效完成了运算并提高了运算精度;
2、在存储方面,依据单次通信海量运算的原则,通信一次,完成了N个M点FFT运算,这样大大隐藏了通信消耗;
3、利用到了每个线程块内部的高速缓存:共享存储器,进一步减少通信时间,提高了运行效率。
附图说明
图1为本发明的流程图。
具体实施方式
以在SAR成像系统中对一个4096×4096的点目标成像这一应用为例,本专利的实现主要包括以下几个流程:
第一步:在SAR成像算法中,原始数据是一个4096×4096的二维数组,每个元素类型是浮点数,对这个矩阵的每一行都要进行FFT,也就是说要进行4096次的一维4096点FFT;把不同行的数据分别标识为idata1、idata2…idata4096,然后按标识符从小到大的次序将它们首尾相接,把二维数组组成一个一维数组,并记作idata;
第二步:计算idata所占存储空间的大小:mem_size=sizeof(float)*4096*4096;
第三步:在GPU全局存储器上分配mem_size大小的存储空间标识为idata_gpu,然后通过函数cudamemcopy将内存上的数据idata拷贝到GPU全局存储器的idata_gpu;
第四步:将idata_gpu的数据每4096个元素进行一次切割,得到与原始数据对应的4096组数据,分别标识为idata_gpu1、idata_gpu2…idata_gpu4096;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910088373.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高底散热鞋
- 下一篇:一种XD卡驱动方法和装置





