2011-08-17 117 views
2

我目前正在研究一个库,它有自己的内部fft(快速傅里叶变换)库,我想用FFTW来替换它。现在,其他开发人员对它可能导致的性能问题有点担心。速度方面最关键的部分也是处理半复杂实数的1D卷积算法。 (我正在使用fftw的fftw_plan_r2r_1d)。fft算法的基准测试方法

此外,事情有点复杂,因为内部fftw根据变换的大小使用不同的算法。

我目前的想法是生成一堆不同长度的数据集。然后读取它们并在进行转换之前以预定方式修改每次迭代的数据集数组。

还有什么我应该知道的吗?

回答

1

确保您为每个测试用例生成FFTW的最佳计划。患者和累赘标志可以使计划更快,但他们可能需要很长时间才能到达那里。 (很明显,你不应该把这个时间包括在你的基准测试中,因为它是一次性的,可以缓存的)。

如果你只需要单精度输入/输出数据,那么建立FFTW库的单精度版本 - 它们可以相当比默认的双精度版本快一点,对于大多数应用程序来说足够准确信号处理和图像处理。

另外,当构建FFTW库时,确保在适合您的体系结构的情况下启用SIMD,例如, x86上的SSE或PowerPC上的AltiVec。

1

你也可以尝试我的混合基数fft例程,可从my homepage获得。它包含一个基准测试程序,用于评估速度和准确度。