24 #ifndef SKA_CHEETAH_FFT_ALTERA_FFTWORKER_H 25 #define SKA_CHEETAH_FFT_ALTERA_FFTWORKER_H 28 #include "cheetah/fft/Config.h" 29 #include "cheetah/data/TimeSeries.h" 30 #include "cheetah/data/FrequencySeries.h" 31 #include "cheetah/data/ComplexTypeTraits.h" 32 #include "panda/arch/altera/Kernel.h" 33 #include "panda/arch/altera/CommandQueue.h" 34 #include "rabbit/cxft/Cxft.h" 45 typedef typename cheetah::Fpga Architecture;
47 using Complex =
typename data::ComplexTypeTraits<Architecture, T>::type;
50 FftWorker(fft::Config
const& config, panda::PoolResource<Fpga>
const& device);
53 FftWorker(FftWorker
const&) =
delete;
54 FftWorker(FftWorker&&) =
delete;
56 template <
typename T,
typename InputAlloc,
typename OutputAlloc>
57 void operator()(data::TimeSeries<cheetah::Fpga , T, InputAlloc>
const& input,
58 data::FrequencySeries<cheetah::Fpga, Complex<T>, OutputAlloc>& output);
61 fft::Config
const& _config;
62 panda::PoolResource<panda::altera::OpenCl>
const& _device;
63 std::unique_ptr<panda::altera::Kernel> _fetch_kernel;
64 std::unique_ptr<panda::altera::Kernel> _fetch_mwt_kernel;
65 std::unique_ptr<panda::altera::Kernel> _fft_kernel;
66 std::unique_ptr<panda::altera::Kernel> _transpose_kernel;
67 std::unique_ptr<panda::altera::Kernel> _transpose_mwt_kernel;
68 std::unique_ptr<panda::altera::Kernel> _last_kernel;
69 std::unique_ptr<panda::altera::Kernel> _first_kernel;
70 std::unique_ptr<panda::altera::CommandQueue> _first_queue;
71 std::unique_ptr<panda::altera::CommandQueue> _fetch_queue;
72 std::unique_ptr<panda::altera::CommandQueue> _fetch_mwt_queue;
73 std::unique_ptr<panda::altera::CommandQueue> _fft_queue;
74 std::unique_ptr<panda::altera::CommandQueue> _transpose_queue;
75 std::unique_ptr<panda::altera::CommandQueue> _transpose_mwt_queue;
76 std::unique_ptr<panda::altera::CommandQueue> _data_queue;
77 std::unique_ptr<panda::altera::CommandQueue> _last_queue;
78 ska::rabbit::cxft::Cxft _cxft;
87 #include "cheetah/fft/altera/detail/FftWorker.cpp" 89 #endif // ENABLE_OPENCL 90 #endif // SKA_CHEETAH_FFT_ALTERA_FFTWORKER_H Some limits and constants for FLDO.