Highly Efficient FFT for Exascale: HeFFTe v2.3
heffte::fftw_executor Class Reference

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).
 

Detailed Description

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.


The documentation for this class was generated from the following file: