Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
MedianScrunch.cuh
1 #ifndef SKA_CHEETAH_DRED_CUDA_DETAIL_MEDIANSCRUNCH_H
2 #define SKA_CHEETAH_DRED_CUDA_DETAIL_MEDIANSCRUNCH_H
3 
4 #include "cheetah/cuda_utils/cuda_thrust.h"
5 
6 namespace ska {
7 namespace cheetah {
8 namespace dred {
9 namespace cuda {
10 namespace detail {
11 
12 template <typename T> inline __host__ __device__ T median3(T a, T b, T c);
13 template <typename T> inline __host__ __device__ T median4(T a, T b, T c, T d);
14 template <typename T> inline __host__ __device__ T median5(T a, T b, T c, T d, T e);
15 
16 template <typename T>
17 struct Median5Functor: public thrust::unary_function<T,T>
18 {
19  const T* _in;
20  Median5Functor(const T* in);
21  inline __host__ __device__ T operator()(unsigned int i) const;
22 };
23 
24 template <typename T>
25 struct LinearStretchFunctor: public thrust::unary_function<T,T>
26 {
27  const T* _in;
28  unsigned _in_size;
29  float _step;
30  float _correction;
31  LinearStretchFunctor(const T* in, unsigned in_size, float step);
32  inline __host__ __device__ T operator()(unsigned out_idx) const;
33 };
34 
35 
36 } // namespace detail
37 } // namespace cuda
38 } // namespace dred
39 } // namespace cheetah
40 } // namespace ska
41 
42 #include "cheetah/dred/cuda/detail/MedianScrunch.cu"
43 
44 #endif // SKA_CHEETAH_DETAIL_MEDIANSCRUNCH_H
Some limits and constants for FLDO.
Definition: Brdz.h:35