Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Optimization.h
1 /*
2  * The MIT License (MIT)
3  *
4  * Copyright (c) 2016 The SKA organisation
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef SKA_CHEETAH_FLDO_TEST_UTILS_OPTIMIZATION_H
25 #define SKA_CHEETAH_FLDO_TEST_UTILS_OPTIMIZATION_H
26 
27 #ifdef ENABLE_CUDA
28 
29 #include "FldoUtils.h"
30 
31 namespace ska {
32 namespace cheetah {
33 namespace fldo {
34 namespace cuda {
35 namespace util {
36 
37 // routines defined in Optimization.cu
38 void corner_turner_and_rebin(cudaDeviceProp properties, int first_bin_idx, uint64_t nsamp_per_subslot,
39  size_t nchannels, std::vector<CandidateRebin> &rebin, unsigned char *d_in);
40 
41 void build_scrunched_profiles(size_t ncandidates, size_t max_phases, size_t nsubbands, size_t nsubint, float mean,
42  float *d_folded, float *d_weight, float *d_outfprof, float* d_outprof,
43  std::vector<util::GpuStream>&exec_stream);
44 
45 int first_valid_binidx(std::vector<util::CandidateRebin> &rebin);
46 
47 void perturb_candidates(data::Scl const& ori_data, data::Scl &opt_data, float *d_folded, float* d_perturbed,
48  float *d_outfprof, float *d_opt_profile, std::vector<util::GpuStream>& exec_stream,
49  std::vector<double> const &time_sum, std::vector <double> const &freq_sum,
50  std::vector<float> &trial_param, int nchannel, int nsubints,
51  int nsubbands, int default_max_phases, double tobs, int p_trial, int p_rf,
52  int pdot_trial, int pdot_rf, int dm_trial, int dm_rf);
53 
54 void compute_max_sn(size_t const ncandidates, int trials_num, int default_max_phases, float sigma, float
55  *d_opt_profile, std::vector<float>& sn_max, std::vector<float>&
56  pulse_width, std::vector<int>& index_max, std::vector<util::GpuStream>& exec_stream);
57 
58 void find_max(float *raw_in, int start, int N, float &max_sn, float &pulse_width, int &index);
59 
60 
61 } // util
62 } // namespace cuda
63 } // namespace fldo
64 } // namespace cheetah
65 } // namespace ska
66 
67 #endif //ENABLE_CUDA
68 
69 #endif // SKA_CHEETAH_FLDO_TEST_UTILS_OPTIMIZATION_H
Some limits and constants for FLDO.
Definition: Brdz.h:35