Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Hrms.cuh
1 #ifndef SKA_CHEETAH_HRMS_CUDA_HRMS_H
2 #define SKA_CHEETAH_HRMS_CUDA_HRMS_H
3 
4 #include "cheetah/hrms/cuda/Config.h"
5 #include "cheetah/hrms/Config.h"
6 #include "cheetah/data/PowerSeries.h"
7 #include "cheetah/data/Units.h"
8 #include "cheetah/utils/AlgorithmBase.h"
9 #include "cheetah/utils/Architectures.h"
10 #include "panda/arch/nvidia/DeviceCapability.h"
11 
12 #include <vector>
13 
14 namespace ska {
15 namespace cheetah {
16 namespace hrms {
17 namespace cuda {
18 
24 class Hrms: public utils::AlgorithmBase<Config, hrms::Config>
25 {
26  public:
27  typedef cheetah::Cuda Architecture;
28  typedef panda::nvidia::DeviceCapability<2,0, panda::nvidia::giga/2> ArchitectureCapability;
29  typedef panda::PoolResource<Architecture> ResourceType;
30 
31  public:
37  Hrms(Config const& config, hrms::Config const& algo_config);
38  Hrms(Hrms const&) = delete;
39  Hrms(Hrms&&) = default;
40  ~Hrms();
41 
52  template <typename T, typename Alloc>
53  void process(ResourceType& gpu,
55  std::vector<data::PowerSeries<cheetah::Cuda,T,Alloc>>& output);
56 };
57 
58 } //cuda
59 } //hrms
60 } //cheetah
61 } //ska
62 
63 #include "cheetah/hrms/cuda/detail/Hrms.cu"
64 
65 #endif //SKA_CHEETAH_HRMS_CUDA_HRMS_H
66 
67 
68 
69 
70 
71 
72 
void process(ResourceType &gpu, data::PowerSeries< cheetah::Cuda, T, Alloc > const &input, std::vector< data::PowerSeries< cheetah::Cuda, T, Alloc >> &output)
Perform harmonic summing of a PowerSeries object.
Definition: Hrms.cu:89
configuration for the hrms module
Definition: Config.h:39
CUDA/Thrust implementation of the Hrms algorithm.
Definition: Hrms.cuh:24
Some limits and constants for FLDO.
Definition: Brdz.h:35
Class for power series (detected FrequencySeries).
Definition: PowerSeries.h:58
Hrms(Config const &config, hrms::Config const &algo_config)
Construct an instance of Hrms.
Definition: Hrms.cu:8
Algorithm configuration object for Hrms.
Definition: Config.h:40