CN103902506A - 一种基于龙芯3b的fftw3优化方法 - Google Patents

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

Info

Publication number
CN103902506A
CN103902506A CN201410153672.6A CN201410153672A CN103902506A CN 103902506 A CN103902506 A CN 103902506A CN 201410153672 A CN201410153672 A CN 201410153672A CN 103902506 A CN103902506 A CN 103902506A
Authority
CN
China
Prior art keywords
formula
discrete fourier
real
fourier transformation
parameter
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.)
Granted
Application number
CN201410153672.6A
Other languages
English (en)
Other versions
CN103902506B (zh
Inventor
顾乃杰
王小乐
张明
任开新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Advanced Technology University of Science and Technology of China
Original Assignee
Institute of Advanced Technology University of Science and Technology of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Advanced Technology University of Science and Technology of China filed Critical Institute of Advanced Technology University of Science and Technology of China
Priority to CN201410153672.6A priority Critical patent/CN103902506B/zh
Publication of CN103902506A publication Critical patent/CN103902506A/zh
Application granted granted Critical
Publication of CN103902506B publication Critical patent/CN103902506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于龙芯3B的FFTW3优化方法,其特征是:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化;在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化。本发明能有效提高FFTW3在龙芯3B处理器上的运行性能,从而达到在龙芯3B处理器上FFTW3的高效实现。

Description

一种基于龙芯3B的FFTW3优化方法
技术领域
本发明属于电数字数据处理技术领域,具体涉及龙芯3B处理器上FFTW3实现优化方法。
背景技术
龙芯3B是首款国产商用8核处理器,主频达到1GHz,支持向量运算加速,峰值计算能力达到128GFLOPS,具有很高的性能功耗比。龙芯3B主要用于高性能计算机、高性能服务器、数字信号处理等领域。FFTW(the Faster Fourier Transform in the West)是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo和S.Johnson开发,可计算一维或多维实数和复数数据以及任意规模的离散傅里叶变换(DFT,Discrete Fourier Transform)。FFTW3是在FFTW的基础上进行二次开发而成的新版本,新增了对共享和分布式存储系统的并行变换,可自动适应你的机器,缓存,存储器大小,寄存器个数。FFTW3通常比目前其它开源的傅里叶变换程序运行效率高,其最新版本为fftw-3.3.3。FFTW3的高效实现是通过将规模大的离散傅里叶变换分解为多个小规模的离散傅里叶变换,其核心代码也就是完成小规模离散傅里叶变换,这些代码比较短,采用汇编语言实现将会获得更好的性能,龙芯3B处理有132个向量寄存器,能够保证其汇编实现对寄存器数量的需要。
目前实际应用的FFTW3并没有针对龙芯3B处理器进行优化,因此通用的FFTW3单纯移植在龙芯3B处理器上不能较好地发挥龙芯3B处理器的特性。
发明内容
本发明是为避免上述现有技术所存在的不足之处,提供基于龙芯3B的FFTW3优化方法,以期提高FFTW3在龙芯3B处理器上的运行性能,从而达到在龙芯3B处理器上FFTW3的高效实现。
本发明为解决以上技术问题采用如下方案:
本发明一种基于龙芯3B的FFTW3优化方法的特点是:所述优化方法是利用向量指令方法、Cooley-Tukey算法以及实部和虚部单独计算处理方法,分别按如下情况对离散傅里叶变换函数进行优化;
情况一:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化;
情况二:在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化;
所述向量指令方法是指使用所定义的128位访存指令和计算指令对所述离散傅里叶变换函数中的输入参数分别进行访存和2点FFT计算:
所述128位访存指令定义为:
读取指令VLDC1vd,addr,用于读取寻址地址寄存器addr中的128位数据到向量寄存器vd中;
存放指令VLSC1vd,addr,用于将寄存器vd中低128位数据存放到地址寄存器addr中;
所述计算指令定义为:
低128位2点FFT计算指令对VMULADD vd,vs,vt,vr和VMULADDL vd,vs,vt,vr,用于共同完成向量双精度FFT运算低128位数据计算;
高128位2点FFT计算指令对VMULADDH vd,vs,vt,vr和VMULADDLH vd,vs,vt,vr,用于共同完成向量双精度FFT运算高128位数据计算;
所述Cooley-Tukey算法是按如下步骤进行:
步骤1:利用式(1)和式(2)对所述离散傅里叶变换函数中计算规模N进行索引变换:
n=N2×n1+n2    式(1)
K=k1+N1×k2    式(2)
式(1)和式(2)中,N1和N2为所述计算规模N的因子,且满足N1×N2=N;参数n的值域为[0,N-1],参数K的值域为[0,N-1],参数n1和参数k1的值域都为[0,N1-1],参数n2和参数k2的值域都为[0,N2-1];
步骤2:利用式(3)进行离散傅里叶变换获得离散傅里叶变换的输出值X(k1+N1k2):
X ( k 1 + N 1 k 2 ) = Σ n 2 = 0 N 2 - 1 W N 2 n 2 k 2 × ( W N n 2 k 1 × ( Σ n 1 = 0 N 1 - 1 x ( N 2 × n 1 + n 2 ) × W N 1 n 1 k 1 ) )     式(3)
式(3)中,
Figure BDA0000491729930000022
为所述计算规模N的第n2k1个旋转因子;为所述因子N2的第n2k2个旋转因子;为所述因子N1的第n1k1个旋转因子;
由此,将所述计算规模为N的离散傅里叶变换优化成规模为因子N1和因子N2的离散傅里叶变换;
所述实部和虚部单独计算处理方法按如下步骤进行:
步骤a:判断所述离散傅里叶变换中的计算规模N的奇偶性,若计算规模N为偶数,则执行步骤b后结束;若计算规模N为奇数,则跳转到步骤c,执行步骤c后结束;
步骤b:利用式(4)、式(5)和式(6)获得所述离散傅里叶变换在偶数点时输出序列的实部Xreal(k):
X real ( 0 ) = ( x ( 0 ) + x ( n 2 ) ) + ( x ( 1 ) + x ( n - 1 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) )     式(4)
X real ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) + x ( n - i ) ) × W N ik + x ( n 2 ) × ( - 1 ) k     式(5)
X real ( n 2 ) = ( x ( 0 ) - x ( n 2 ) ) - ( x ( 1 ) + x ( n - 1 ) ) + ( x ( 2 ) + x ( n - 2 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) )     式(6)
利用式(7)获得所述离散傅里叶变换在偶数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik     式(7)
式(4)、式(5)、式(6)和式(7)中,x(0),x(1),…x(n)为离散傅里叶变换序列;Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)表示所述输出序列第k个位置的实部值,参数k的值域为
Figure BDA0000491729930000034
为所述输出序列第
Figure BDA0000491729930000035
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure BDA0000491729930000036
Figure BDA0000491729930000037
表示计算规模N的第ik个旋转因子;
步骤c:利用式(8)和式(9)获得所述离散傅里叶变换在奇数点时输出序列的实部Xreal(k):
X real ( 0 ) = ( x ( 1 ) + x ( n - 1 ) ) + ( x ( 2 ) + x ( n - 2 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) ) + x ( 0 )     式(8)
X real ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) + x ( n - i ) ) × W N ik + x ( 0 )     式(9)
利用式(10)获得所述离散傅里叶变换在奇数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik     式(10)
式(8)、式(9)和式(10)中,Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)为所述输出序列第k个位置的实部值,参数k的值域为
Figure BDA00004917299300000311
为所述输出序列第
Figure BDA00004917299300000312
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure BDA00004917299300000313
Figure BDA00004917299300000314
表示计算规模N的第ik个旋转因子。
与已有技术相比,本发明有益效果体现在:
1、与直接的移植实现在龙芯3B处理器上的通用FFTW3相比,本发明通过采用使用向量指令方法减少访存次数,采用Cooley-Tukey算法以及实部和虚部单独计算处理方法,减少了计算量,从而提升了FFTW3性能;
2、由于发明采用向量指令方法,使用128位访存指令能够减少访存次数,访存效率大幅度上升;计算指令的使用减少了程序的计算量,从而提高了FFTW3性能;
3、由于发明采用Cooley-Tukey算法,使程序计算一个大规模离散傅里叶变换变为计算多个小规模离散傅里叶变换,减少了计算量,从而提高了FFTW3的性能;
4、由于本发明采用实部和虚部单独计算处理方法,通过对具有相同旋转因子位置点的合并计算,使原来的乘法次数减半,降低了程序所需计算量,提高了程序的运行速度;
5、经过实验验证,本发明方法在复数离散傅里叶变换中,计算规模N为6时性能提升为37.99%,计算规模N为10时性能提升为25.21%,计算规模N为11时性能提升为188.04%,计算规模N为12时性能提升为25.14%,计算规模N为16时性能提升为81.35%;在实数离散傅里叶变换中,计算规模N为6时性能提升为59.91%,计算规模N为10时性能提升为40.83%,计算规模N为11时性能提升为85.43%,计算规模N为12时性能提升为23.49%。对FFTW3中小规模离散傅里叶变换的优化对大规模离散傅里叶变换计算也有一定的提升。
具体实施方式
本发明的目的是提出一种FFTW3的优化方法,以用来克服通用FFTW3没有针对龙芯3B处理器硬件特性进行优化而运行性能不高的问题。
龙芯3B处理器是支持MIPS64指令集及龙芯扩展指令集,9级超流水线结构,四发射乱序执行结构,2个定点单元、2个浮点单元和1个访存单元,每个浮点单元支持256位向量运算。本发明将最新版本FFTW3fftw-3.3.3移植到龙芯3B处理器上。
龙芯3B的FFTW3优化方法是采用利用向量指令方法、Cooley-Tukey算法以及实部和虚部单独计算处理方法分别按如下情况对离散傅里叶变换函数进行优化;
情况一:在计算规模为和数的复数离散傅里叶变换中利用向量指令方法和Cooley-Tukey算法进行优化;
情况二:在计算实数离散傅里叶变换中利用向量指令方法和实部和虚部单独计算处理方法进行优化;
向量指令方法是指使用所定义的128位访存指令和计算指令对离散傅里叶变换函数中的输入参数分别进行访存和2点FFT计算:
128位访存指令定义:
读取指令VLDC1vd,addr,用于读取寻址地址寄存器addr中的128位数据到向量寄存器vd中;
存放指令VLSC1vd,addr,用于将寄存器vd的低128位数据存放到地址寄存器addr中;
龙芯3B处理器自身具有的128位访存指令,可以对输入和输出数据加倍进行处理,使用128位访存指令进行访存优化也适用于非合数复数离散傅里叶变换。
计算指令定义:
低128位2点FFT计算指令对VMULADD vd,vs,vt,vr和VMULADDL vd,vs,vt,vr,用于共同完成向量双精度FFT运算低128位数据计算;
高128位2点FFT计算指令对VMULADDH vd,vs,vt,vr和VMULADDLH vd,vs,vt,vr,用于共同完成向量双精度FFT运算高128位数据计算;
龙芯3B处理器自身具有的计算指令一次可以完成为256位数据的计算;
2点FFT变换,即计算规模N为2的离散傅里叶变换函数,龙芯3B处理器拥有完成上述指令功能相关的指令。
Cooley-Tukey算法是按如下步骤进行:
步骤1:利用式(1)和式(2)对离散傅里叶变换函数中计算规模N进行索引变换:
n=N2×n1+n2    式(1)
K=k1+N1×k2    式(2)
式(1)和式(2)中,N1和N2为计算规模N的因子,且满足N1×N2=N;参数n的值域为[0,N-1],参数K的值域为[0,N-1],参数n1和参数k1的值域都为[0,N1-1],参数n2和参数k2的值域都为[0,N2-1];
本实施例中,以N=12,N1=3,N2=4为例,则参数n值域为[0,11],参数K值域为[0,11],参数n1和参数k1的值域都为[0,2],参数n2和参数k2的值域都为[0,3];按照式(1)和式(2)分别建立表一索引n和表二索引K如下所示:
表一索引n
Figure BDA0000491729930000051
表二索引K
Figure BDA0000491729930000052
步骤2:利用式(3)进行离散傅里叶变换获得离散傅里叶变换的输出值X(k1+N1k2):
X ( k 1 + N 1 k 2 ) = Σ n 2 = 0 N 2 - 1 W N 2 n 2 k 2 × ( W N n 2 k 1 × ( Σ n 1 = 0 N 1 - 1 x ( N 2 × n 1 + n 2 ) × W N 1 n 1 k 1 ) )     式(3)
式(3)中,
Figure BDA0000491729930000062
为计算规模N的第n2k1个旋转因子;为因子N2的第n2k2个旋转因子;为因子N1的第n1k1个旋转因子;
由此,将计算规模为N的离散傅里叶变换优化成规模为因子N1和因子N2的离散傅里叶变换;
本实施例中,利用式(3)获得输出值X(k1+N1k2),需要分2部分进行计算:第1部分是计算N2=4个规模为N1=3的离散傅里叶变换,即对表一中每一列作为一个规模为N1=3的离散傅里叶变换,将相应位置变换结果分别再乘以相应的
Figure BDA0000491729930000065
得到式(3)中
Figure BDA0000491729930000066
部分计算,结果保存为Y(k1+N1×k2);第2部分是计算N1=3个规模为N2=4的离散傅里叶变换,即对表二中每一行作为一个规模为N2=4的离散傅里叶变换,结果保存为X(k1+N1k2);第1部分计算过程的核心伪代码如下:
第1部分计算过程的核心伪代码中步骤③实现的核心代码如下,以Y[1]求解为例:
查找表二知k1=1,k2=0,查找表一知n2=0。用寄存器v0-v2表示输入数据x[0]-x[2],寄存器v20表示计算规模N为3的第0个旋转因子,寄存器v24表示计算规模N为3的第1个旋转因子,寄存器v28表示计算规模N为3的第2个旋转因子,v31表示存放离散傅里叶变换输出序列的第2个位置的数值,即X[1]的值,寄存器v100是初始值为0,这些寄存器都是龙芯3B向量256向量寄存器。下面3条指令用于完成X[1]的计算过程:
VMULADDL v31,v100,v20,v0//这条指令完成X[1]=0+x(0)W3 0
VMULADDL v31,v31,v24,v1//完成X[1]=X[1]+x(1)W3 1
VMULADDL v31,v31,v28,v2//完成X[1]=X[1]+x(2)W3 2
其他语句实现方式与X[1]实现方式类似,本发明采用的是对所有X(k1+N1k2)求解都采用汇编语言展开循环依次实现,在求解出X(k1+N1k2)各个值后即完成规模为N=12的离散傅里叶变换。
实部和虚部单独计算处理方法按如下步骤进行:
步骤a:判断所述离散傅里叶变换中的计算规模N的奇偶性,若计算规模N为偶数,则执行步骤b后结束;若计算规模N为奇数,则跳转到步骤c,执行步骤c后结束;
步骤b:利用式(5)、式(6)和式(7)获得所述离散傅里叶变换在偶数点时输出序列的实部Xreal(k):
FFTW3是将多点离散傅里叶变换拆分为多个小点离散傅里叶变换,因此FFTW3的核心代码是计算小点数离散傅里叶变换。小点数离散傅里叶变换代码量少,为了进一步获得高性能本发明使用汇编语言,下面的for循环和其他语句的实现过程也是依次展开由汇编语言实现;
X real ( 0 ) = ( x ( 0 ) + x ( n 2 ) ) + ( x ( 1 ) + x ( n - 1 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) )     式(5)
实现核心伪代码如下:
Figure BDA0000491729930000072
Figure BDA0000491729930000081
利用式(8)获得所述离散傅里叶变换在偶数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik     式(8)
实现核心伪代码如下:
Figure BDA0000491729930000083
式(5)、式(6)、式(7)和式(8)中,x(0),x(1),…x(n)为离散傅里叶变换序列;Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)表示所述输出序列第k个位置的实部值,参数k的值域为
Figure BDA0000491729930000084
为所述输出序列第
Figure BDA0000491729930000085
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure BDA0000491729930000086
Figure BDA0000491729930000087
表示计算规模N的第ik个旋转因子;
步骤c:计利用式(9)和式(10)获得所述离散傅里叶变换在奇数点时输出序列的实部Xreal(k):
X real ( 0 ) = ( x ( 1 ) + x ( n - 1 ) ) + ( x ( 2 ) + x ( n - 2 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) ) + x ( 0 )     式(9)
实现核心伪代码如下:
Figure BDA0000491729930000092
X real ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) + x ( n - i ) ) × W N ik + x ( 0 ) 式(10_)
实现核心伪代码如下:
Figure BDA0000491729930000093
利用式(11)获得所述离散傅里叶变换在奇数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik 式(11)
实现核心伪代码如下:
Figure BDA0000491729930000095
式(9)、式(10)和式(11)中,Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)为所述输出序列第k个位置的实部值,参数k的值域为
Figure BDA0000491729930000096
为所述输出序列第
Figure BDA0000491729930000097
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure BDA0000491729930000101
Figure BDA0000491729930000102
表示计算规模N的第ik个旋转因子;由此,将计算规模为N的离散傅里叶变换优化成规模为因子N1和因子N2的离散傅里叶变换。在实数离散傅里叶变换中输出的实部和虚部之间的计算没有任何关系,本发明通过将实部和虚部分解求解,同时将具有相同旋转因子的位置合并在一起计算,减少了乘法运算次数。

Claims (1)

1.一种基于龙芯3B的FFTW3优化方法,其特征在于:所述优化方法是利用向量指令方法、Cooley-Tukey算法以及实部和虚部单独计算处理方法,分别按如下情况对离散傅里叶变换函数进行优化;
情况一:在计算规模为和数的复数离散傅里叶变换中利用所述向量指令方法和Cooley-Tukey算法进行优化;
情况二:在计算实数离散傅里叶变换中利用所述向量指令方法和实部和虚部单独计算处理方法进行优化;
所述向量指令方法是指使用所定义的128位访存指令和计算指令对所述离散傅里叶变换函数中的输入参数分别进行访存和2点FFT计算:
所述128位访存指令定义为:
读取指令VLDC1vd,addr,用于读取寻址地址寄存器addr中的128位数据到向量寄存器vd中;
存放指令VLSC1vd,addr,用于将寄存器vd中低128位数据存放到地址寄存器addr中;
所述计算指令定义为:
低128位2点FFT计算指令对VMULADD vd,vs,vt,vr和VMULADDL vd,vs,vt,vr,用于共同完成向量双精度FFT运算低128位数据计算;
高128位2点FFT计算指令对VMULADDH vd,vs,vt,vr和VMULADDLH vd,vs,vt,vr,用于共同完成向量双精度FFT运算高128位数据计算;
所述Cooley-Tukey算法是按如下步骤进行:
步骤1:利用式(1)和式(2)对所述离散傅里叶变换函数中计算规模N进行索引变换:
n=N2×n1+n2    式(1)
K=k1+N1×k2    式(2)
式(1)和式(2)中,N1和N2为所述计算规模N的因子,且满足N1×N2=N;参数n的值域为[0,N-1],参数K的值域为[0,N-1],参数n1和参数k1的值域都为[0,N1-1],参数n2和参数k2的值域都为[0,N2-1];
步骤2:利用式(3)进行离散傅里叶变换获得离散傅里叶变换的输出值X(k1+N1k2):
X ( k 1 + N 1 k 2 ) = Σ n 2 = 0 N 2 - 1 W N 2 n 2 k 2 × ( W N n 2 k 1 × ( Σ n 1 = 0 N 1 - 1 x ( N 2 × n 1 + n 2 ) × W N 1 n 1 k 1 ) )     式(3)
式(3)中,
Figure FDA0000491729920000012
为所述计算规模N的第n2k1个旋转因子;
Figure FDA0000491729920000013
为所述因子N2的第n2k2个旋转因子;
Figure FDA0000491729920000014
为所述因子N1的第n1k1个旋转因子;
由此,将所述计算规模为N的离散傅里叶变换优化成规模为因子N1和因子N2的离散傅里叶变换;
所述实部和虚部单独计算处理方法按如下步骤进行:
步骤a:判断所述离散傅里叶变换中的计算规模N的奇偶性,若计算规模N为偶数,则执行步骤b后结束;若计算规模N为奇数,则跳转到步骤c,执行步骤c后结束;
步骤b:利用式(4)、式(5)和式(6)获得所述离散傅里叶变换在偶数点时输出序列的实部Xreal(k):
X real ( 0 ) = ( x ( 0 ) + x ( n 2 ) ) + ( x ( 1 ) + x ( n - 1 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) )     式(4)
X real ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) + x ( n - i ) ) × W N ik + x ( n 2 ) × ( - 1 ) k     式(5)
X real ( n 2 ) = ( x ( 0 ) - x ( n 2 ) ) - ( x ( 1 ) + x ( n - 1 ) ) + ( x ( 2 ) + x ( n - 2 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) )     式(6)
利用式(7)获得所述离散傅里叶变换在偶数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik     式(7)
式(4)、式(5)、式(6)和式(7)中,x(0),x(1),…x(n)为离散傅里叶变换序列;Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)表示所述输出序列第k个位置的实部值,参数k的值域为为所述输出序列第
Figure FDA0000491729920000026
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure FDA0000491729920000027
Figure FDA0000491729920000028
表示计算规模N的第ik个旋转因子;
步骤c:利用式(8)和式(9)获得所述离散傅里叶变换在奇数点时输出序列的实部Xreal(k):
X real ( 0 ) = ( x ( 1 ) + x ( n - 1 ) ) + ( x ( 2 ) + x ( n - 2 ) ) + . . . + ( x ( n 2 - 1 ) + x ( n 2 + 1 ) ) + x ( 0 )     式(8)
X real ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) + x ( n - i ) ) × W N ik + x ( 0 )     式(9)
利用式(10)获得所述离散傅里叶变换在奇数点时输出序列的虚部Ximage(k):
X image ( k ) = Σ i = 1 n 2 - 1 ( x ( i ) - x ( n - i ) ) × W N ik     式(10)
式(8)、式(9)和式(10)中,Xreal(0)为所述输出序列第1个位置的实部值,Xreal(k)为所述输出序列第k个位置的实部值,参数k的值域为
Figure FDA0000491729920000031
为所述输出序列第
Figure FDA0000491729920000032
个位置的实部值;Ximage(k)为所述输出序列第个k位置的虚部值,参数i的值域为
Figure FDA0000491729920000033
Figure FDA0000491729920000034
表示计算规模N的第ik个旋转因子。
CN201410153672.6A 2014-04-16 2014-04-16 一种基于龙芯3b的fftw3优化方法 Active CN103902506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410153672.6A CN103902506B (zh) 2014-04-16 2014-04-16 一种基于龙芯3b的fftw3优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410153672.6A CN103902506B (zh) 2014-04-16 2014-04-16 一种基于龙芯3b的fftw3优化方法

Publications (2)

Publication Number Publication Date
CN103902506A true CN103902506A (zh) 2014-07-02
CN103902506B CN103902506B (zh) 2017-02-15

Family

ID=50993836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410153672.6A Active CN103902506B (zh) 2014-04-16 2014-04-16 一种基于龙芯3b的fftw3优化方法

Country Status (1)

Country Link
CN (1) CN103902506B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095730A (zh) * 2016-06-23 2016-11-09 中国科学技术大学 一种基于ilp和dlp的fft浮点优化方法
CN114090951A (zh) * 2021-11-26 2022-02-25 北京睿芯众核科技有限公司 一种面向数据流处理器芯片的傅里叶变化优化方法
CN115712505A (zh) * 2022-11-25 2023-02-24 湖南胜云光电科技有限公司 一种寄存器中分配电信号的数据处理系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214160A (zh) * 2011-07-08 2011-10-12 中国科学技术大学 一种基于龙芯3a的单精度矩阵乘法优化方法
CN302331118S (zh) * 2012-08-10 2013-02-27 杨久安 毛巾(宾客专用)
CN103530276A (zh) * 2013-09-25 2014-01-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
CN103678255A (zh) * 2013-12-16 2014-03-26 合肥优软信息技术有限公司 一种基于龙芯3号处理器的fft高效并行实现优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102331118A (zh) * 2011-08-05 2012-01-25 安徽中鼎橡塑制品有限公司 空调干燥总成

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214160A (zh) * 2011-07-08 2011-10-12 中国科学技术大学 一种基于龙芯3a的单精度矩阵乘法优化方法
CN302331118S (zh) * 2012-08-10 2013-02-27 杨久安 毛巾(宾客专用)
CN103530276A (zh) * 2013-09-25 2014-01-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
CN103678255A (zh) * 2013-12-16 2014-03-26 合肥优软信息技术有限公司 一种基于龙芯3号处理器的fft高效并行实现优化方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
LING LI等: "An FFT Performance Model for Optimizing General-Purpose Processor Architecture", 《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY》 *
MATTEO FRIGO等: "This manual is for FFTW v3.3.3", 《FFTW》 *
吴淅等: "基于龙芯3B的循环规约算法向量化研究", 《计算机工程》 *
彭飞等: "龙芯3B的 SIMD编译优化及分析", 《小型微型计算机系统》 *
龙芯中科技术有限公司: "龙芯3B1500处理器用户手册V1.1", 《龙芯中科》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095730A (zh) * 2016-06-23 2016-11-09 中国科学技术大学 一种基于ilp和dlp的fft浮点优化方法
CN106095730B (zh) * 2016-06-23 2018-10-23 中国科学技术大学 一种基于指令级并行ilp和数据级并行dlp的fft浮点优化方法
CN114090951A (zh) * 2021-11-26 2022-02-25 北京睿芯众核科技有限公司 一种面向数据流处理器芯片的傅里叶变化优化方法
CN115712505A (zh) * 2022-11-25 2023-02-24 湖南胜云光电科技有限公司 一种寄存器中分配电信号的数据处理系统
CN115712505B (zh) * 2022-11-25 2023-06-30 湖南胜云光电科技有限公司 一种寄存器中分配电信号的数据处理系统

Also Published As

Publication number Publication date
CN103902506B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
US9268691B2 (en) Fast mechanism for accessing 2n±1 interleaved memory system
Gu et al. An empirically tuned 2D and 3D FFT library on CUDA GPU
CN103955446A (zh) 基于dsp芯片的可变长度fft计算方法
CN104679720A (zh) 一种实现fft的运算方法
WO2022068205A1 (zh) 数据存储和读取方法及系统
CN104679719A (zh) 一种基于fpga的浮点运算方法
CN103902506A (zh) 一种基于龙芯3b的fftw3优化方法
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
US9098449B2 (en) FFT accelerator
CN103034621B (zh) 基2×k并行fft架构的地址映射方法及系统
CN104699624A (zh) 面向fft并行计算的无冲突存储访问方法
CN105718424B (zh) 一种并行快速傅立叶变换处理方法
CN102722472B (zh) 一种复数矩阵的优化方法
CN104679721A (zh) 一种fft处理器的运算方法
Li et al. Automatic FFT performance tuning on OpenCL GPUs
CN117633418A (zh) 基于矩阵运算的多维快速傅立叶变换加速方法
CN103493039B (zh) 数据处理方法、数据处理装置、接入设备和用户设备
CN104572588A (zh) 矩阵求逆处理方法和装置
Lee et al. Large‐scale 3D fast Fourier transform computation on a GPU
US20140089370A1 (en) Parallel bit reversal devices and methods
CN114139108B (zh) 一种向量dsp核的矩阵lu分解向量化计算方法
Li et al. Accelerating SAR imaging using vector extension on multi-core SIMD CPU
CN106095730A (zh) 一种基于ilp和dlp的fft浮点优化方法
CN104615583A (zh) 基于gpu平台实现数据处理的方法和装置
Blattner et al. Performance study on CUDA GPUs for parallelizing the local ensemble transformed Kalman filter algorithm

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