【问题标题】:Is multithreaded FFTW deterministic多线程 FFTW 是确定性的
【发布时间】:2013-11-25 16:31:51
【问题描述】:

我在我的程序中运行时得到的结果略有不同。它使用带有FFTW_ESTIMATE 标志的多线程FFTW。多线程 FFTW 是确定性的:

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

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

【问题讨论】:

    标签: multithreading fftw deterministic


    【解决方案1】:

    fftw 文档:

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

    规定只有fftw_execute 是可重入的。因此,如果没有有关您的使用情况的更多信息,很难说。另外:

    "如果您使用 --enable-debug 或 --enable-debug-malloc 标志配置 FFTW(请参阅 Unix 上的安装),则 fftw_execute 不是线程安全的。这些标志没有记录,因为它们仅用于用于开发和调试 FFTW,但如果必须使用 --enable-debug 则还应特别传递 --disable-debug-malloc 以使 fftw_execute 成为线程安全的。"

    【讨论】:

    • 我的程序本身不是多线程的。我正在使用多线程 FFTW(通过在创建计划之前调用 fftwf_plan_with_nthreads 函数)。
    • 您是否尝试过将普通计划与将线程数设置为 1 的 nthreads 计划的结果进行比较?
    • 是的,得到相同的答案。我在我的代码中发现了一个错误。现在我总是得到相同的结果。仍然想确认多线程 FFTW 是确定性的......
    • 只要你没有使用 --enable-debug 或 --enable-debug-malloc 编译(见我的回答)你应该没问题。
    猜你喜欢
    • 2012-07-27
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2012-07-22
    • 2022-01-22
    相关资源
    最近更新 更多