fft算法的基准测试方法

时间:2011-08-17 21:29:10

标签: benchmarking fft fftw

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

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

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

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

2 个答案:

答案 0 :(得分:1)

确保为每个测试用例生成FFTW的最佳计划。 PATIENT和EXHAUSTIVE标志可以带来更快的计划,但是它们可能需要花费大量时间才能实现。 (显然你不应该把这个时间包括在你的基准时间中,因为它是一次性和可缓存的。)

如果您只需要单精度输入/输出数据,那么构建FFTW库的单精度版本 - 它们可以比默认的双精度版本快得多,并且足够准确,适用于例如大多数应用程序。信号处理和图像处理。

同样,在构建FFTW库时,请确保启用适用于您的体系结构的SIMD,例如:在x86上的SSE或在PowerPC上的AltiVec。

答案 1 :(得分:1)

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