一种基于龙芯3b的fftw3优化方法

文档序号:6544027阅读:449来源:国知局
一种基于龙芯3b的fftw3优化方法
【专利摘要】本发明公开了一种基于龙芯3B的FFTW3优化方法,其特征是:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化;在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化。本发明能有效提高FFTW3在龙芯3B处理器上的运行性能,从而达到在龙芯3B处理器上FFTW3的高效实现。
【专利说明】—种基于龙芯3B的FFTW3优化方法
【技术领域】
[0001]本发明属于电数字数据处理【技术领域】,具体涉及龙芯3B处理器上FFTW3实现优化方法。
【背景技术】
[0002]龙芯3B是首款国产商用8核处理器,主频达到1GHz,支持向量运算加速,峰值计算能力达到128GFL0PS,具有很高的性能功耗比。龙芯3B主要用于高性能计算机、高性能服务器、数字信号处理等领域。FFTW(the Faster Fourier Transform in the West)是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo和S.Johnson开发,可计算一维或多维实数和复数数据以及任意规模的离散傅里叶变换(DFT,Discrete FourierTransform)。FFTW3是在FFTW的基础上进行二次开发而成的新版本,新增了对共享和分布式存储系统的并行变换,可自动适应你的机器,缓存,存储器大小,寄存器个数。FFTW3通常比目前其它开源的傅里叶变换程序运行效率高,其最新版本为fftw-3.3.3。FFTW3的高效实现是通过将规模大的离散傅里叶变换分解为多个小规模的离散傅里叶变换,其核心代码也就是完成小规模离散傅里叶变换,这些代码比较短,采用汇编语言实现将会获得更好的性能,龙芯3B处理有132个向量寄存器,能够保证其汇编实现对寄存器数量的需要。
[0003]目前实际应用的FFTW3并没有针对龙芯3B处理器进行优化,因此通用的FFTW3单纯移植在龙芯3B处理器上不能较好地发挥龙芯3B处理器的特性。

【发明内容】

[0004]本发明是为避免上述现有技术所存在的不足之处,提供基于龙芯3B的FFTW3优化方法,以期提高FFTW3在龙芯3B处理器上的运行性能,从而达到在龙芯3B处理器上FFTW3的闻效实现。
[0005]本发明为解决以上技术问题采用如下方案:
[0006]本发明一种基于龙芯3B的FFTW3优化方法的特点是:所述优化方法是利用向量指令方法、Cooley-Tukey算法以及实部和虚部单独计算处理方法,分别按如下情况对离散傅里叶变换函数进行优化;
[0007]情况一:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化;
[0008]情况二:在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化;
[0009]所述向量指令方法是指使用所定义的128位访存指令和计算指令对所述离散傅里叶变换函数中的输入参数分别进行访存和2点FFT计算:
[0010]所述128位访存指令定义为:
[0011]读取指令VLDClvd,addr,用于读取寻址地址寄存器addr中的128位数据到向量寄存器vd中;[0012]存放指令VLSClvd,addr,用于将寄存器vd中低128位数据存放到地址寄存器addr 中;
[0013]所述计算指令定义为:
[0014]低128 位 2 点 FFT 计算指令对 VMULADD vd, vs, vt, vr 和 VMULADDL vd, vs, vt, vr,用于共同完成向量双精度FFT运算低128位数据计算;
[0015]高128 位 2 点 FFT 计算指令对 VMULADDH vd, vs, vt, vr 和 VMULADDLH vd, vs, vt,vr,用于共同完成向量双精度FFT运算高128位数据计算;
[0016]所述Cooley-Tukey算法是按如下步骤进行:
[0017]步骤1:利用式(I)和式(2)对所述离散傅里叶变换函数中计算规模N进行索引变换:
[0018]n = N2XnJn2 式(I)
[0019]K = !^+N1Xk2 式(2)
[0020]式(I)和式⑵中,N1和N2为所述计算规模N的因子,且满MN1XN2 = N ;参数η的值域为[O, Ν-1],参数K的值域为[O, Ν-1],参数H1和参数Ic1的值域都为[O, N1-1],参数n2和参数k2的值域都为[O, N2-1];
[0021]步骤2:利用式(3)进行离散傅里叶变换获得离散傅里叶变换的输出值X(VN1Ii2):
【权利要求】
1.一种基于龙芯3B的FFTW3优化方法,其特征在于:所述优化方法是利用向量指令方法、Cooley-Tukey算法以及实部和虚部单独计算处理方法,分别按如下情况对离散傅里叶变换函数进行优化; 情况一:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化; 情况二:在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化; 所述向量指令方法是指使用所定义的128位访存指令和计算指令对所述离散傅里叶变换函数中的输入参数分别进行访存和2点FFT计算: 所述128位访存指令定义为: 读取指令VLDClvd,addr,用于读取寻址地址寄存器addr中的128位数据到向量寄存器vd中; 存放指令VLSClvd,addr,用于将寄存器vd中低128位数据存放到地址寄存器addr中; 所述计算指令定义为:
低 128 位 2 点 FFT 计算指令对 VMULADD vd, vs, vt, vr 和 VMULADDL vd, vs, vt, vr,用于共同完成向量双精度FF T运算低128位数据计算;
高 128 位 2 点 FFT 计算指令对 VMULADDH vd, vs, vt, vr 和 VMULADDLH vd, vs, vt, vr,用于共同完成向量双精度FFT运算高128位数据计算; 所述Cooley-Tukey算法是按如下步骤进行: 步骤1:利用式(I)和式(2)对所述离散傅里叶变换函数中计算规模N进行索引变换: n = N2Xn^n2 式(I) K = ki+Ni Xk2 式(2) 式⑴和式(2)中,&和队为所述计算规模N的因子,且满MN1XN2 = N;参数η的值域为[O, Ν-1],参数K的值域为[O, Ν-1],参数H1和参数Ic1的值域都为[O, N1-1],参数n2和参数k2的值域都为[O, N2-1]; 步骤2:利用式(3)进行离散傅里叶变换获得离散傅里叶变换的输出值X (ki+N^):
【文档编号】G06F17/14GK103902506SQ201410153672
【公开日】2014年7月2日 申请日期:2014年4月16日 优先权日:2014年4月16日
【发明者】顾乃杰, 王小乐, 张明, 任开新 申请人:中国科学技术大学先进技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1