发明名称 基于GPU众核平台的FFT并行方法
摘要 本发明公开了一种基于GPU众核平台的FFT并行方法,在存储方面,依据单次通信海量运算的原则,通信一次,完成了N个M点FFT运算,大大隐藏了通信消耗;利用到了每个线程块内部的高速缓存:共享存储器,进一步减少通信时间,提高了运行效率。本发明通过科学的统筹安排,成百上千个处理核心并行处理数据,最大限度的提高了并行度,高效完成了运算并提高了运算精度。
申请公布号 CN101937422B 申请公布日期 2012.09.05
申请号 CN200910088373.8 申请日期 2009.07.02
申请人 北京理工大学 发明人 姚迪;龙腾;靳星星;刘峰
分类号 G06F17/14(2006.01)I;G06F15/167(2006.01)I 主分类号 G06F17/14(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 张利萍
主权项 一种基于GPU众核平台的FFT并行方法,其特征在于:包括以下步骤:第一步:将需要进行一维FFT运算的N个一维数组分别标识为:A1、A2...An,每个一维数组有M个元素,然后将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并行方法。
地址 100081 北京市海淀区中关村南大街5号