发明名称 一种利用GPU加速FFT的方法
摘要 本发明提供一种利用GPU加速FFT的方法,该方法利用GPU设备端快速计算的特点完成大批量数据的FFT变换,通过CPU主机端和GPU设备端的协调运作加速FFT变换过程,其方法架构包括CPU主机端和GPU设备端,其中主机端CPU根据单次FFT长度和FFT批处理次数,对需要进行FFT变换的数据加以整理,并传输到GPU设备中存储,GPU设备端利用其众核处理器计算优势,快速完成所有数据的FFT变换,将结果数据传回CPU主机端。该方法提高了FFT变换性能,满足了规模越来越大、使用越来越频繁的FFT变换需求,减少机房构建成本和管理、运行、维护费用,且开发成本低便于实现。
申请公布号 CN102902657A 申请公布日期 2013.01.30
申请号 CN201210328631.7 申请日期 2012.09.07
申请人 浪潮电子信息产业股份有限公司 发明人 吴庆;张清;赵开勇
分类号 G06F17/14(2006.01)I 主分类号 G06F17/14(2006.01)I
代理机构 代理人
主权项 一种利用GPU加速FFT的方法,其特征在于,系统包括CPU主机端和GPU设备端,利用GPU设备端快速计算的特点完成大批量数据的FFT变换,通过CPU主机端和GPU设备端的协调运作加速FFT变换过程,其中,主机端CPU根据单次FFT长度和FFT批处理次数,对需要进行FFT变换的数据加以整理,并传输到GPU设备中存储,GPU设备端利用其众核处理器计算优势,快速完成所有数据的FFT变换,将结果数据传回CPU主机端,将待FFT变换的数据规集在一起存储,具体步骤如下:(1)CPU主机端规集待FFT变换的数据;主机端先开辟用于存储需要进行FFT变换数据的存储空间,主机端将需要进行FFT变换的数据,根据其所需进行的FFT变换长度和变换方向规集在一起连续存储,存储空间必须连续;(2)GPU设备端开辟设备存储空间,用于存放源数据和目标数据,并预留额外空间;FFT变换的快速算法,需要消耗额外GPU设备存储,所以GPU设备至少需要额外预留约占待处理数据量15%的存储空间;(3)主机端将原始数据,从主存传输到GPU设备存储空间;通过主存与GPU设备数据传输接口memcpy实现数据交换;(4)CPU主机端通过为GPU设备端定义FFT变换句柄,配置FFT变换信息;主机端通过调用FFT变换名柄定义内核函数cufftPlan1d/cufftPlan2d/cufftPlan3d,配置FFT变换信息,包括FFT变换长度,批处理次数,变换类型;(5)CPU主机端启动GPU设备端进行FFT变换计算;主机端通过调用CUFFT库cufftExecC2C相应函数,启动GPU设备进行FFT变换计算,函数参数指定了FFT变换句柄、数据源地址、目的地址及FFT变换方向;(6)CPU主机端启动GPU设备端进行FFT变换规一化计算;主机端通过调用CUBLAS库cublasCsscal函数,启动GPU设备进行FFT变换规一化计算,函数参数指定了数据元素总数、线性变换因子、数据地址及数据存储步长;(7)GPU设备端将FFT变换结果数据,传输回主机端主存空间;通过主存与GPU设备数据传输接口memcpy实现数据交换;(8)如果处理数据规模较大,需要分批处理,则重复(3)~(7),否则进入(9);(9)GPU设备端释放相关资源,FFT变换计算结束;主机端通过调用cufftDestroy函数,释放GPU设备端FFT变换使用的资源。
地址 250014 山东省济南市高新区舜雅路1036号