25 #ifndef SKA_CHEETAH_DDTR_ASTROACCELERATE_DEDISPERSIONSTRATEGY_H 26 #define SKA_CHEETAH_DDTR_ASTROACCELERATE_DEDISPERSIONSTRATEGY_H 28 #include "cheetah/ddtr/DedispersionTrialPlan.h" 29 #include "cheetah/cuda_utils/cuda_errorhandling.h" 30 #include "cheetah/data/Units.h" 31 #include "cheetah/data/TimeFrequency.h" 32 #include "panda/DataChunk.h" 33 #include "panda/Resource.h" 34 #include "panda/Log.h" 42 namespace astroaccelerate {
46 template <
typename NumericalRep>
49 static constexpr
unsigned UNROLLS = 8;
50 static constexpr
unsigned SNUMREG = 8;
51 static constexpr
unsigned SDIVINT = 14;
52 static constexpr
unsigned SDIVINDM = 50;
53 static constexpr
float SFDIVINDM = 50.0f;
54 static constexpr
unsigned MIN_DMS_PER_SPS_RUN = 64;
57 template<
typename NumericalRep,
typename OptimizationParameterT=DedispersionOptimizationParameters<NumericalRep>>
61 typedef boost::units::quantity<data::MegaHertz, double> FrequencyType;
62 typedef data::DedispersionMeasureType<float> Dm;
63 typedef boost::units::quantity<data::dm_constant::s_mhz::Unit, double> DmConstantType;
64 typedef boost::units::quantity<boost::units::si::time, double> TimeType;
73 std::size_t gpu_memory()
const;
78 unsigned int range()
const;
83 std::vector<Dm> user_dm_low()
const;
87 std::vector<Dm> user_dm_high()
const;
91 std::vector<Dm>user_dm_step()
const;
96 std::vector<int> in_bin()
const;
97 std::vector<int> out_bin()
const;
102 unsigned int maxshift()
const;
107 std::vector<Dm> dm_low()
const;
112 std::vector<Dm> dm_high()
const;
117 std::vector<Dm> dm_step()
const;
122 std::vector<float> dmshifts()
const;
127 std::vector<unsigned int> ndms()
const ;
132 unsigned int max_ndms()
const;
137 unsigned int total_ndms()
const;
147 std::vector<std::vector<int>> t_processed()
const;
152 static constexpr
unsigned int nbits();
157 unsigned int nifs()
const;
158 void nifs(
unsigned int value);
163 TimeType tsamp()
const;
168 FrequencyType fch1()
const;
173 FrequencyType foff()
const;
178 unsigned int nsamp()
const;
183 unsigned int nchans()
const;
188 unsigned int num_tchunks()
const;
190 std::size_t memory_requirement_of_SPS();
192 data::DimensionSize<data::Time> dedispersed_samples()
194 return data::DimensionSize<data::Time>(_dedispersed_time_samples);
202 void make_strategy(
size_t gpu_memory);
205 std::size_t _gpu_memory;
207 std::vector<Dm> _user_dm_low;
208 std::vector<Dm> _user_dm_high;
209 std::vector<Dm> _user_dm_step;
210 std::vector<int> _in_bin;
211 std::vector<int> _out_bin;
212 unsigned int _maxshift;
213 std::vector<Dm> _dm_low;
214 std::vector<Dm> _dm_high;
215 std::vector<Dm> _dm_step;
216 std::vector<unsigned int> _dmshifts;
217 std::vector<unsigned int> _ndms;
218 unsigned int _num_tchunks;
219 unsigned int _max_ndms;
220 unsigned int _total_ndms;
222 std::vector<std::vector<int>> _t_processed;
226 unsigned int _nchans;
227 std::vector<float> _bin_frequencies;
230 size_t _SPS_mem_requirement;
231 std::size_t _dedispersed_time_samples;
232 DmConstantType _dm_constant;
241 #include "cheetah/ddtr/astroaccelerate/detail/DedispersionStrategy.cpp" 243 #endif // SKA_CHEETAH_DDTR_ASTROACCELERATE_DEDISPERSIONSTRATEGY_H Configuration module to specify Dedispersion Trials.
Some limits and constants for FLDO.