2

我将 FFTW 用于 FFT,一切正常,但优化需要很长时间才能使用FFTW_PATIENT标志。但是,根据FFTW 文档,我可以通过在运行之间重用智慧来改进这一点,我可以将其导入和导出到文件。(我使用的是浮点 fftw 例程,因此下面的 fftwf_ 前缀而不是 fftw_)

所以,在我的开头main(),我有:

char wisdom_file[] = "optimise.fft";
fftwf_import_wisdom_from_filename(wisdom_file);

最后,我有:

fftwf_export_wisdom_to_filename(wisdom_file);

(我还进行了错误检查以检查返回值是否非零,为简单起见,上面省略了,所以我知道文件正在正确读取和写入)

一次运行后,我得到一个optimise.fft看起来像 ASCII 智慧的文件。然而,随后的运行并没有变得更快,如果我用FFTW_WISDOM_ONLY标志创建我的计划,我得到一个空计划,表明它在那里看不到任何智慧。

我正在使用 3 个不同的 FFT(2 个实数到复数和 1 个反复数到实数),因此也尝试在每个 FFT 中导入/导出,并分隔文件,但这没有帮助。

我正在使用 FFTW-3.3.3,我可以看到 FFTW-2 似乎需要更多设置才能重用智慧,但以上内容现在似乎足够了——我做错了什么?

4

0 回答 0