summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib/general/gri_fft.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src/lib/general/gri_fft.cc')
-rw-r--r--gnuradio-core/src/lib/general/gri_fft.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/gnuradio-core/src/lib/general/gri_fft.cc b/gnuradio-core/src/lib/general/gri_fft.cc
index 8e5c1aed9a..63e3077766 100644
--- a/gnuradio-core/src/lib/general/gri_fft.cc
+++ b/gnuradio-core/src/lib/general/gri_fft.cc
@@ -158,6 +158,18 @@ gri_fft_complex::~gri_fft_complex ()
fftwf_free (d_outbuf);
}
+void
+gri_fft_complex::set_nthreads(int n)
+{
+ if (n <= 0)
+ throw std::out_of_range ("gri_fftw: invalid number of threads");
+ d_nthreads = n;
+
+#ifdef FFTW3F_THREADS
+ fftwf_plan_with_nthreads(d_nthreads);
+#endif
+}
+
void
gri_fft_complex::execute ()
{
@@ -213,6 +225,18 @@ gri_fft_real_fwd::~gri_fft_real_fwd ()
fftwf_free (d_outbuf);
}
+void
+gri_fft_real_fwd::set_nthreads(int n)
+{
+ if (n <= 0)
+ throw std::out_of_range ("gri_fftw: invalid number of threads");
+ d_nthreads = n;
+
+#ifdef FFTW3F_THREADS
+ fftwf_plan_with_nthreads(d_nthreads);
+#endif
+}
+
void
gri_fft_real_fwd::execute ()
{
@@ -268,6 +292,18 @@ gri_fft_real_rev::~gri_fft_real_rev ()
fftwf_free (d_outbuf);
}
+void
+gri_fft_real_rev::set_nthreads(int n)
+{
+ if (n <= 0)
+ throw std::out_of_range ("gri_fftw: invalid number of threads");
+ d_nthreads = n;
+
+#ifdef FFTW3F_THREADS
+ fftwf_plan_with_nthreads(d_nthreads);
+#endif
+}
+
void
gri_fft_real_rev::execute ()
{