在多线程程序中调用fftw

时间:2013-01-14 13:04:01

标签: c++ multithreading fftw

我想在线程中使用fftw3。但是粘贴在http://codepad.org/lIjdGF5z的代码会导致“双重免费或损坏”错误。如何正确调用线程中的fftw3例程。谢谢!您可以通过命令“g ++ test.cpp -lfftw3_threads -lfftw3 -lboost_thread”编译代码

1 个答案:

答案 0 :(得分:3)

我认为对fftw_plan_dft_2d的调用不是可重入的,这意味着即使您正在创建不同的计划,也无法同时在多个线程中调用它。根据文档Thread Safety page的第2段,唯一具有线程安全性的fftw函数是fftw_execute变体。

另外正如Paul R.在评论中提到的那样,你应该只在开头创建一次计划,然后一遍又一遍地使用它们。它会快得多。此外,根据“线程安全”文档页面的第3段,您可以在同时调用fftw_execute的同时使用相同的计划。因此,如果您的变换大小相同,那么您只需要为所有线程制定一个计划。