Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Pwft.cuh
1 #ifndef SKA_CHEETAH_PWFT_CUDA_PWFT_CUH
2 #define SKA_CHEETAH_PWFT_CUDA_PWFT_CUH
3 
4 #include "cheetah/pwft/cuda/Config.h"
5 #include "cheetah/pwft/Config.h"
6 #include "cheetah/data/FrequencySeries.h"
7 #include "cheetah/data/PowerSeries.h"
8 #include "cheetah/data/Units.h"
9 #include "cheetah/data/ComplexTypeTraits.h"
10 #include "cheetah/utils/Architectures.h"
11 #include "cheetah/utils/AlgorithmBase.h"
12 #include "cheetah/cuda_utils/cuda_thrust.h"
13 #include "panda/arch/nvidia/DeviceCapability.h"
14 
15 namespace ska {
16 namespace cheetah {
17 namespace pwft {
18 namespace cuda {
19 
20 
25 class Pwft: utils::AlgorithmBase<Config, pwft::Config>
26 {
27  public:
28  typedef cheetah::Cuda Architecture;
29  typedef panda::nvidia::DeviceCapability<2,0, panda::nvidia::giga/2> ArchitectureCapability;
30  typedef panda::PoolResource<Architecture> ResourceType;
31 
32  public:
33 
39  Pwft(Config const& config, pwft::Config const& algo_config);
40  Pwft(Pwft const&) = delete;
41  Pwft(Pwft&&) = default;
42  ~Pwft();
43 
59  template <typename T, typename InputAlloc, typename OutputAlloc>
60  void process_direct(ResourceType& gpu,
61  data::FrequencySeries<Architecture,typename data::ComplexTypeTraits<cheetah::Cuda,T>::type, InputAlloc> const& input,
63 
64 
79  template <typename T, typename InputAlloc, typename OutputAlloc>
80  void process_nn(ResourceType& gpu,
81  data::FrequencySeries<Architecture,typename data::ComplexTypeTraits<cheetah::Cuda,T>::type,InputAlloc> const& input,
83 
84  private:
85 };
86 
87 } //cuda
88 } //pwft
89 } //cheetah
90 } //ska
91 
92 #include "cheetah/pwft/cuda/detail/Pwft.cu"
93 
94 #endif //SKA_CHEETAH_PWFT_CUDA_PWFT_H
void process_direct(ResourceType &gpu, data::FrequencySeries< Architecture, typename data::ComplexTypeTraits< cheetah::Cuda, T >::type, InputAlloc > const &input, data::PowerSeries< Architecture, T, OutputAlloc > &output)
Form power spectrum using absolute squared.
Definition: Pwft.cu:45
Cuda implementation of the Power Spectrum Fourier Transform module.
Definition: Pwft.cuh:25
Pwft(Config const &config, pwft::Config const &algo_config)
Construct a new instance.
Definition: Pwft.cu:10
void process_nn(ResourceType &gpu, data::FrequencySeries< Architecture, typename data::ComplexTypeTraits< cheetah::Cuda, T >::type, InputAlloc > const &input, data::PowerSeries< Architecture, T, OutputAlloc > &output)
Form power spectrum using absolute squared with nearest neighbour comparison.
Definition: Pwft.cu:60
A helper class to determine the type of complex data for different architectures. ...
A container of Fourier series data.
Some limits and constants for FLDO.
Definition: Brdz.h:35
Class for power series (detected FrequencySeries).
Definition: PowerSeries.h:58