Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
|
A class for performing FFTs. More...
#include <cheetah/fft/Fft.h>
Public Member Functions | |
Fft (fft::Config const &config) | |
Construct and Fft instance. More... | |
Fft (Fft const &)=delete | |
Fft (Fft &&)=default | |
template<typename Arch , typename InputType , typename OutputType , typename... Args> | |
void | process (panda::PoolResource< Arch > &resource, InputType const &input, OutputType &output, Args &&... args) |
Perform an FFT. More... | |
A class for performing FFTs.
The Fft class acts as a forwarding class for architecture dependent FFT implementations. Forwarding is determined by the types of the data passed to the process() method. These types also implicitly specify the type of FFT to be performed.
ska::cheetah::fft::Fft::Fft | ( | fft::Config const & | config | ) |
void ska::cheetah::fft::Fft::process | ( | panda::PoolResource< Arch > & | resource, |
InputType const & | input, | ||
OutputType & | output, | ||
Args &&... | args | ||
) |
Perform an FFT.
The type of FFT performed is deduced from the types of the inputs such that: Input Output FftType TimeSeries (Real) FrequencySeries R2C FrequencySeries TimeSeries (Real) C2R TimeSeries (Complex) FrequencySeries C2C Forward FrequencySeries TimeSeries (Complex) C2C Inverse
This acts as a forwarding method, forwarding the relevant parameters to implementations that are determined by the resource type and the input and output types.
[in] | resource | A panda::PoolResource instance specifying the resource to process on |
[in] | input | A TimeSeries or FrequencySeries instance |
[out] | output | A TimeSeries or FrequencySeries instance |
Arch | The cheetah architecture type |
InputType | The type of the input parameter |
OutputType | The type of the output parameter |
Args | The types of any additional parameters to be forwarded to the implementation |
Forward the FFT request to the relevant method of the first implementation that will accept it. The algorithm is determined via an Architecture : Implementation map which must be specified in the scope of the containing class. This provides compile-time resolution of the call chain.