Highly Efficient FFT for Exascale: HeFFTe v2.3
|
Wrapper around the FFTW3 API. More...
#include <heffte_backend_fftw.h>
Public Member Functions | |
template<typename index > | |
fftw_executor (void *, box3d< index > const box, int dimension) | |
Constructor, specifies the box and dimension. | |
template<typename index > | |
fftw_executor (void *, box3d< index > const box, int dir1, int dir2) | |
Merges two FFTs into one. | |
template<typename index > | |
fftw_executor (void *, box3d< index > const box) | |
Merges three FFTs into one. | |
void | forward (std::complex< float > data[], std::complex< float > *) const override |
Forward fft, float-complex case. | |
void | backward (std::complex< float > data[], std::complex< float > *) const override |
Backward fft, float-complex case. | |
void | forward (std::complex< double > data[], std::complex< double > *) const override |
Forward fft, double-complex case. | |
void | backward (std::complex< double > data[], std::complex< double > *) const override |
Backward fft, double-complex case. | |
void | forward (float const indata[], std::complex< float > outdata[], std::complex< float > *workspace) const override |
Converts the deal data to complex and performs float-complex forward transform. | |
void | backward (std::complex< float > indata[], float outdata[], std::complex< float > *workspace) const override |
Performs backward float-complex transform and truncates the complex part of the result. | |
void | forward (double const indata[], std::complex< double > outdata[], std::complex< double > *workspace) const override |
Converts the deal data to complex and performs double-complex forward transform. | |
void | backward (std::complex< double > indata[], double outdata[], std::complex< double > *workspace) const override |
Performs backward double-complex transform and truncates the complex part of the result. | |
int | box_size () const override |
Returns the size of the box. | |
size_t | workspace_size () const override |
Return the size of the needed workspace. | |
virtual void | forward (float[], float *) const |
Bring forth method that have not been overloaded. | |
virtual void | forward (double[], double *) const |
Bring forth method that have not been overloaded. | |
virtual void | forward (std::complex< float >[], std::complex< float > *) const |
Bring forth method that have not been overloaded. | |
virtual void | forward (std::complex< double >[], std::complex< double > *) const |
Bring forth method that have not been overloaded. | |
virtual void | forward (float const [], std::complex< float >[], std::complex< float > *) const |
Bring forth method that have not been overloaded. | |
virtual void | forward (double const [], std::complex< double >[], std::complex< double > *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (float[], float *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (double[], double *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (std::complex< float >[], std::complex< float > *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (std::complex< double >[], std::complex< double > *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (std::complex< float >[], float[], std::complex< float > *) const |
Bring forth method that have not been overloaded. | |
virtual void | backward (std::complex< double >[], double[], std::complex< double > *) const |
Bring forth method that have not been overloaded. | |
virtual int | complex_size () const |
Bring forth method that have not been overloaded. | |
Public Member Functions inherited from heffte::executor_base | |
virtual | ~executor_base ()=default |
Virtual destructor. | |
virtual void | forward (float[], float *) const |
Forward r2r, single precision. | |
virtual void | forward (double[], double *) const |
Forward r2r, double precision. | |
virtual void | backward (float[], float *) const |
Backward r2r, single precision. | |
virtual void | backward (double[], double *) const |
Backward r2r, double precision. | |
virtual int | complex_size () const |
Return the size of the complex-box (r2c executors). | |
Wrapper around the FFTW3 API.
A single class that manages the plans and executions of fftw3 so that a single API is provided for all backends. The executor operates on a box and performs 1-D FFTs for the given dimension. The class silently manages the plans and buffers needed for the different types. All input and output arrays must have size equal to the box.