您好!
我将论坛提供的FFT工程(网址http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/12423.aspx)
在6678 EVM 8个核上并行运行,发现以下问题:
1.在主核上调用genFFTTestData()初始化数据时仅有1024个点的值为1.0,剩下的(1024 * 1024 – 1024)个点的值全为0,这么
生成有什么目的吗?
2. 我改了上面提到的初始化数据的方法,将所有的1024 * 1024个点全部初始化为0~255的随机数或不全为1.0和0.0的数,发现
compare_float()返回非零值并且主核打印输出fail之类的。我通过debug发现,compare_float()里的用8核并行计算得到每个点的
FFT值和主核用dft()计算得到的每个点的FFT值相差比较大,远远超过了规定的0.01,甚至达到了几十。
我想问:
1.工程里用8核算FFT和主核用dft()计算得到每个点的FFT值是不是应该完全一样?允许两次计算有差值吗?
2.如果不一样是什么地方的什么原因导致的?有无改进的方法?怎么改进?
3.如果两次计算的差值确实存在,怎么评估该差值是否在可接受的范围内?
Andy Yin1:
差异取决于两者的计算方法,你可以将两者的结果与matlab浮点结果比较看看差异。