CN101937422B - 基于gpu众核平台的fft并行方法 - Google Patents
基于gpu众核平台的fft并行方法 Download PDFInfo
- Publication number
- CN101937422B CN101937422B CN200910088373A CN200910088373A CN101937422B CN 101937422 B CN101937422 B CN 101937422B CN 200910088373 A CN200910088373 A CN 200910088373A CN 200910088373 A CN200910088373 A CN 200910088373A CN 101937422 B CN101937422 B CN 101937422B
- Authority
- CN
- China
- Prior art keywords
- thread block
- designated
- fft
- data
- gpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于GPU众核平台的FFT并行方法,在存储方面,依据单次通信海量运算的原则,通信一次,完成了N个M点FFT运算,大大隐藏了通信消耗;利用到了每个线程块内部的高速缓存:共享存储器,进一步减少通信时间,提高了运行效率。本发明通过科学的统筹安排,成百上千个处理核心并行处理数据,最大限度的提高了并行度,高效完成了运算并提高了运算精度。
Description
技术领域
本发明涉及一种基于GPU众核平台的FFT并行方法,以及在工程实践中的应用。
背景技术
FFT,即快速傅立叶变换,在工程中大量使用,也是百年来在工程上很重要的一种数学工具,因此也是影响工程效率的重要因素。虽然目前已经有各种各样的不同的算法来实现FFT,但是它们均是在CPU上进行串行处理。CPU作为传统的核心处理器,其强大的指令控制和数据处理能力不容置疑,但是,因为CPU芯片的将近75%的面积都要用来做存储,因此其集成度比较低,目前做的较为卓越的也就是IBM和SONY共同推出的8核处理器:CELL。而近年来,图形处理器(GPU)性能得到大幅度提高,与CPU不同,GPU是一个并行的向量处理器,可以集成成百上千的处理核心,并且以一个程序多次数据模式(SIMD)工作,因此具有强大的并行计算能力。但是目前还没有在这种含有成百上千个处理核心的具有强大计算能力的GPGPU上面并行实现FFT运算。
发明内容
本发明所要解决的技术问题是提供一种基于GPU众核平台的FFT并行方法,能够在包含成百上千个处理核心的GPGPU上并行、高效的实现FFT运算以及在工程中应用。
该基于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个对应的结果。
本发明的有益效果:
1、通过科学的统筹安排,成百上千个处理核心并行处理数据,最大限度的提高了并行度,高效完成了运算并提高了运算精度;
2、在存储方面,依据单次通信海量运算的原则,通信一次,完成了N个M点FFT运算,这样大大隐藏了通信消耗;
3.利用到了每个block内部的高速缓存:shared memory,进一步减少通信时间,提高了运行效率。
附图说明
图1为本发明的流程图
具体实施方式
以在SAR成像系统中对一个4096×4096的点目标成像这一应用为例,本专利的实现主要包括以下八个流程:
第一步:在SAR成像算法中,原始数据是一个4096×4096的二维数组,每个元素类型是float,对这个矩阵的每一行都要进行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;
第五步:设置完成所有运算的grid有4096个blocks,然后将GPU全局存储器上的4096组数据idata_gpu2...idata_gpu4096分别对应导入block1、block2...block4096的shared memory;
第六步:在每个block内部,将属于该block的shared memory的4096点数据进行一维4096点FFT运算,结果同样保存在该block的shared memory中;4096个block执行同样的操作;
第七步:采用同步,保证4096个block均计算完毕,然后将每个block内shared memory的运算结果对应的导出到idata_gpu1、idata_gpu2...idata_gpu4096;然后将idata_gpu1到idata_gpu4096的结果数据首尾相接,组成一维数组,标识为odata_gpu;然后将odata_gpu的数据拷贝到内存,标识为odata;
第八步:将odata一维数组每4096个元素进行一次切割,依次分为odata1、odata2...odata4096,这就是要进行一维4096点FFT运算的4096个一维数组的4096个对应的结果;然后将这4096组一维数组按照标识符从小到大的次序分别作为二维数组的一行,最终组成一个二维数组,即为FFT的结果;然后将结果返回到SAR成像算法中,完成SAR成像。
将SAR成像算法中需要进行通过以上八步就实现了SAR成像系统中的FFT并行运算。由于在同一时刻总是有上百的处理核心在运算数据,因此并行度很高,运行效率也得到提升。再有就是单次通信海量运算的策略很大程度的减少了内存与GPU全局存储器之间的通信时间。综合来说,通过以上的流程,实现了在含有成百上千个处理核心的GPGPU上高效、并行的FFT运算,为工程实践提供了一种更为高效的数学工具。
Claims (1)
1.一种基于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并行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910088373A CN101937422B (zh) | 2009-07-02 | 2009-07-02 | 基于gpu众核平台的fft并行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910088373A CN101937422B (zh) | 2009-07-02 | 2009-07-02 | 基于gpu众核平台的fft并行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101937422A CN101937422A (zh) | 2011-01-05 |
CN101937422B true CN101937422B (zh) | 2012-09-05 |
Family
ID=43390756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910088373A Expired - Fee Related CN101937422B (zh) | 2009-07-02 | 2009-07-02 | 基于gpu众核平台的fft并行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101937422B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799564A (zh) * | 2012-06-28 | 2012-11-28 | 电子科技大学 | 基于多核dsp平台的fft并行方法 |
CN105224506B (zh) * | 2015-10-29 | 2018-02-13 | 北京大学 | 一种用于gpu异构集群的高性能fft方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441271A (zh) * | 2008-12-05 | 2009-05-27 | 航天恒星科技有限公司 | 基于gpu的sar实时成像处理设备 |
-
2009
- 2009-07-02 CN CN200910088373A patent/CN101937422B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441271A (zh) * | 2008-12-05 | 2009-05-27 | 航天恒星科技有限公司 | 基于gpu的sar实时成像处理设备 |
Non-Patent Citations (2)
Title |
---|
Naga K. Govindaraju等.Cache efficient numerical algorithms using graphics hardware.《Parallel Computing》.2007,(第33期),全文. * |
邓劲.图形芯片上的合成孔径雷达回波生成仿真研究.《中国优秀硕士学位论文全文数据库》.2007,(第3期),29-67. * |
Also Published As
Publication number | Publication date |
---|---|
CN101937422A (zh) | 2011-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737145B (zh) | 具有常駐在晶片上之參數的神經網路加速器 | |
US20210201124A1 (en) | Systems and methods for neural network convolutional layer matrix multiplication using cache memory | |
CN105487838B (zh) | 一种动态可重构处理器的任务级并行调度方法与系统 | |
CN104636273B (zh) | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 | |
Hong-Tao et al. | K-means on commodity GPUs with CUDA | |
Zhang et al. | FinePar: Irregularity-aware fine-grained workload partitioning on integrated architectures | |
CN1983196B (zh) | 用于将执行线程分组的系统和方法 | |
CN101937425B (zh) | 基于gpu众核平台的矩阵并行转置方法 | |
Dehnavi et al. | Enhancing the performance of conjugate gradient solvers on graphic processing units | |
Koza et al. | Compressed multirow storage format for sparse matrices on graphics processing units | |
US9170836B2 (en) | System and method for re-factorizing a square matrix into lower and upper triangular matrices on a parallel processor | |
Liu | Parallel and scalable sparse basic linear algebra subprograms | |
CN112947870A (zh) | 一种3D打印模型的G-code并行生成方法 | |
Wu et al. | Optimizing dynamic programming on graphics processing units via adaptive thread-level parallelism | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN101937422B (zh) | 基于gpu众核平台的fft并行方法 | |
Jiang et al. | GLARE: Accelerating Sparse DNN Inference Kernels with Global Memory Access Reduction | |
CN103150157B (zh) | 基于访存分歧的gpu核心程序重组优化方法 | |
Chen et al. | The parallel algorithm implementation of matrix multiplication based on ESCA | |
Mu et al. | The implementation and optimization of Bitonic sort algorithm based on CUDA | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
Morari et al. | Efficient sorting on the tilera manycore architecture | |
CN114116208A (zh) | 一种基于gpu的短波辐射传输模式三维加速方法 | |
Liang et al. | Design of 16-bit fixed-point CNN coprocessor based on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120905 Termination date: 20150702 |
|
EXPY | Termination of patent right or utility model |