2013-11-25 24 views
1

我的程序中运行之间的结果略有不同。它使用与FFTW_ESTIMATE标志一起计划的多线程FFTW。是多线程FFTW确定性的:是多线程FFTW确定性

  1. 对于固定数量的线程?
  2. 在不同运行时使用的不同线程数之间?

FFTW常见问题解答说,FFTW_ESTIMATE标志导致在运行之间使用相同的算法,但它没有明确说它在多线程情况下是确定性的。

回答

1

的FFTW文档:

http://www.fftw.org/fftw3_doc/Thread-safety.html#Thread-safety

规定,只有fftw_execute是折返。所以很难说没有关于您的使用情况的更多信息。另外:

“如果你配置了--enable-调试或--enable-调试的malloc标志(见UNIX安装)FFTW,然后fftw_execute是不是线程安全的这些标志没有记录,因为他们仅用于开发和调试FFTW,但是如果您必须使用--enable-debug,则还应该特别将fdtw_execute的--disable-debug-malloc传递为线程安全。“

+0

我的程序本身不是多线程的。我正在使用多线程FFTW(通过在创建计划之前调用'fftwf_plan_with_nthreads'函数)。 – user2052436

+0

您是否尝试过使用nthreads将线程数设置为1比较普通计划和计划的结果? – Sebastien

+0

是的,得到同样的答案。我在我的代码中发现了一个错误。现在我总是得到相同的结果。仍然想确认多线程FFTW是确定性的... – user2052436