24 #include "cheetah/rfim/cuda/Rfim.h" 33 template<
typename RfimTraits>
34 Rfim<RfimTraits>::Rfim(Config
const& )
38 template<
typename RfimTraits>
39 Rfim<RfimTraits>::~Rfim()
46 template<
typename RfimTraits>
47 inline void Rfim<RfimTraits>::operator()(panda::PoolResource<Cuda>&, DataType&, DataAdapter&)
51 void flagger_freq_kernel(data::TimeFrequency<Cpu, uint8_t>
const&,
unsigned char*);
54 template<
typename DataType>
55 struct CudaRfimExecutor
57 template<
typename DataAdapter,
typename DataT>
58 inline static void exec(panda::PoolResource<Cuda>&, DataT
const&, DataAdapter&) {
59 PANDA_LOG_WARN <<
"Rfim::cuda:: No algorithm available for this data type";
64 struct CudaRfimExecutor<uint8_t>
66 template<
typename DataAdapter,
typename DataT>
67 inline static void exec(panda::PoolResource<Cuda>&, DataT
const& data, DataAdapter&)
69 typedef typename std::decay<decltype(data)>::type::DataType DataType;
70 typedef unsigned char LocalFlagsType;
72 std::size_t data_size=data.number_of_channels() * data.number_of_spectra();
73 if(data_size == 0)
return;
76 LocalFlagsType* host_flags =
new LocalFlagsType[data_size];
79 flagger_freq_kernel(data, host_flags);
102 template<
typename RfimTraits>
103 inline void Rfim<RfimTraits>::operator()(panda::PoolResource<Cuda>& device, DataType& data, DataAdapter& adapter)
105 typedef typename std::decay<decltype(data)>::type::DataType NumericalT;
106 CudaRfimExecutor<NumericalT>::exec(device, data, adapter);
Some limits and constants for FLDO.