TI中文支持网
TI专业的中文技术问题搜集分享网站

点数64K,128K的FFT运行时间测试,

测试方法:测试数据为复数float,实部、虚部交替存储,FFT调用的是库函数

工程文件已经上传,欢迎下载

各位大神,请问你们的64KFFT运行时间大概是多少?我把我的工程文件上传了请大家帮忙运行一下吧,看看哪儿需要改进?我们的项目要求点数为64K复数floa的FFT运行时间在2ms以内,TI的一些文档给出64K复数floa的FFT运行时间在1.8ms,麻烦大家给指导一下或者把你们的FFT程序发过来我学习一下,谢谢!

存在的问题:

1.修改cache大小、设置prefetch对运行时间都没有改善

我做了两个实验:

1.把输入数据、旋转因子、输出数据直接存储在SL2中,运行时间为3ms

存储位置为:

/*******数据存储位置SL2中***************/

#define Input_Address    (0x0C100000)

#define W_Address        (0x0C200000)

#define Output_Address   (0x0C300000)

2.把输入数据、旋转因子、输出数据直接存储在DDR3中,运行时间为8ms

存储位置为:

/*******数据存储位置DDR3中***************/

/#define Input_Address    (0x81000000)

#define W_Address        (0x82000000)

#define Output_Address   (0x83000000)

 

Andy Yin1:

试试把数据放在LL2测测时间。

参考VLFFT例程:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/12423.aspx

文档中1core 64K FFT的处理时延就是基于上述例程测出来的。

Jack Dong:

回复 Andy Yin1:

你好,Andy Yin1,C6678的LL2大小只有512KB,点数为64k的复数float的FFT的数据大小(包括输入,输出和旋转因子)为64k*8*3=1536KB>512KB,LL2太小无法完成。能不能帮忙看看我的CMD文件以及以及FFT变量的定义的存储地址空间会不会在访问时发生冲突。

还有一个问题就是我设置cache大小,以及是否具有pretech程序的运行时间没有改善,找不到原因,求帮忙!

Andy Yin1:

回复 Jack Dong:

我之前给你贴的链接中的VLFFT程序,在单核上测试64K FFT耗时在1.8ms左右,其中是通过EDMA将数据从DDR搬到LL2处理,并不是直接对DDR操作,所以你可以参考我们的测试源码。

Jack Dong:

回复 Andy Yin1:

你给的文件里面没有cmd文件,您能上传一个cmd文件吗?我没有用cmd文件直接运行的是6ms左右

Andy Yin1:

回复 Jack Dong:

链接中的工程是基于sysBios,所以其中有一个cfg文件,cfg编译后会根据配置自动生成一个cmd

Xiao Ma1:

回复 Andy Yin1:

Andy Yin1,您好!

      我现在基于VLFFT实例工程编写了一个VLFFT测试工程,FFT、转置、乘法等全部用的是VLFFT中提供的子函数,现在计算了64K和128K点的FFT,并且将结果和MATLAB中的运算结果进行了比较:

1)发现结果不完全一样,精度误差较大

2)论坛里并没有对误差的分析,也没有看到相关文档,请问TI之前有没有衡量过计算误差?

3)是什么原因造成的?是乘法运算?float精度不够?

谢谢!

Xiao Ma1:

回复 Andy Yin1:

Andy Yin1 ,您好!

我用TI库里提供的FFT测试,即DSPF_sp_fftSPxSP这个函数,文档里些支持8~131072点数的FFT计算,但是,我实际测试时,发现最大只能到64K,128K得不到正确结果,请问,该函数支持128K点FFT吗?还是我的测试方法有问题?谢谢

 

li li20:

回复 Xiao Ma1:

我最近也在研究超大点数FFT计算,也发现这个问题DSPF_sp_fftSPxSP这个函数最大只能运算到64k,不过DSPF_sp_fftSPxSP_cn可以运算128k,你楼上说的修改VLFFT例程是改成不带bios的吗?可以参考一下么?谢谢!emal:909322383@qq.com

赞(0)
未经允许不得转载:TI中文支持网 » 点数64K,128K的FFT运行时间测试,
分享到: 更多 (0)