backport fix for FFTW3 threading issue
This commit is contained in:
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user