2013-11-25 7 views
1

Я получаю немного разные результаты между прогонами в моей программе. Он использует многопоточную FFTW, запланированную с флагом FFTW_ESTIMATE. Является многопоточным FFTW детерминированным:Является многопоточным FFTW детерминированным

  1. Для фиксированного количества потоков?
  2. Между различными количествами потоков, используемых при разных прогонах?

FFTW чаво говорит, что FFTW_ESTIMATE результатов флага в этом алгоритме используются между запусками, но это явно не сказать, что он является детерминированным в многопоточном случае.

ответ

1

Документация FFTW:

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

предусматривает, что только fftw_execute реентерабелен. Так что трудно сказать, не больше информации о вашем использовании. Кроме того:

«Если вы настроены FFTW с флагами --enable-debug или --enable-debug-malloc (см. Установка в Unix), то fftw_execute не является потокобезопасным. Эти флаги не документированы, поскольку они предназначены только для разработки и отладки FFTW, но если вы должны использовать --enable-debug, тогда вы также должны специально передать --disable-debug-malloc для fftw_execute, чтобы быть потокобезопасным. "

+0

Моя программа сама по себе не многопоточная. Я использую многопоточную FFTW (вызывая функцию 'fftwf_plan_with_nthreads' перед созданием плана). – user2052436

+0

Вы пытались сравнить результаты из плана плана и плана с nthreads, задав количество потоков в 1? – Sebastien

+0

Да, получаю такой же ответ. Я нашел ошибку в своем коде. Теперь я получаю одинаковые результаты. Еще хотелось бы подтвердить, что многопоточный FFTW является детерминированным ... – user2052436

Смежные вопросы