backport fix for FFTW3 threading issue

This commit is contained in:
conrad
2025-03-26 00:38:22 +10:00
parent efab35fc57
commit 26e69d1e3a
+29 -1
View File
@@ -50,7 +50,8 @@ class fft_engine_fftw3
podarray<cx_type> Y_work; // for storing output
inline
~fft_engine_fftw3()
void
finish()
{
arma_debug_sigprint();
@@ -59,6 +60,33 @@ class fft_engine_fftw3
// fftw3::cleanup<cx_type>(); // NOTE: this also removes any wisdom acquired by FFTW3
}
inline
~fft_engine_fftw3()
{
arma_debug_sigprint();
#if defined(ARMA_USE_OPENMP)
{
#pragma omp critical (arma_fft_engine_fftw3)
{
(*this).finish();
}
}
#elif defined(ARMA_USE_STD_MUTEX)
{
std::mutex& plan_mutex = fft_engine_fftw3_aux::get_plan_mutex();
const std::lock_guard<std::mutex> lock(plan_mutex);
(*this).finish();
}
#else
{
(*this).finish();
}
#endif
}
inline
fft_engine_fftw3(const uword in_N)
: N (in_N )