From f36097ee81d632cf098d9af5fbb6834d5354532b Mon Sep 17 00:00:00 2001 From: Thomas <purcell@fhi-berlin.mpg.de> Date: Thu, 10 Jun 2021 07:55:49 +0000 Subject: [PATCH] Update schedules to be all monotonic This was throwing seg faults if it was not monotonic --- src/feature_creation/feature_space/FeatureSpace.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/feature_creation/feature_space/FeatureSpace.cpp b/src/feature_creation/feature_space/FeatureSpace.cpp index 1c72bdef..a7d7d55d 100644 --- a/src/feature_creation/feature_space/FeatureSpace.cpp +++ b/src/feature_creation/feature_space/FeatureSpace.cpp @@ -347,14 +347,14 @@ void FeatureSpace::generate_reparam_feature_set(const std::vector<double>& prop) std::shared_ptr<NLOptimizer> optimizer_param = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, _prop, _max_phi, _max_param_depth); std::shared_ptr<NLOptimizer> optimizer_reparam = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, prop, _max_phi, _max_param_depth); - #pragma omp for schedule(dynamic) + #pragma omp for schedule(monotonic: dynamic) for(auto feat_1 = _phi_reparam.begin() + _start_gen_reparam.back() + _mpi_comm->rank(); feat_1 < _phi_reparam.end(); feat_1 += _mpi_comm->size()) { generate_non_param_feats(feat_1, next_phi_private, _phi_reparam.begin(), feat_ind, l_bound, u_bound); generate_param_feats(feat_1, next_phi_private, _phi_reparam.begin(), feat_ind, optimizer_param, l_bound, u_bound); } - #pragma omp for schedule(dynamic) + #pragma omp for schedule(monotonic: dynamic) for(auto feat_1 = _phi.begin() + _start_gen[nn-1] + _mpi_comm->rank(); feat_1 < _phi.begin() + _end_no_params[nn-1]; feat_1 += _mpi_comm->size()) { generate_reparam_feats(feat_1, next_phi_private, feat_ind, optimizer_reparam, l_bound, u_bound); @@ -572,7 +572,7 @@ void FeatureSpace::generate_feature_space() std::vector<node_ptr> next_phi_private; std::shared_ptr<NLOptimizer> optimizer = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, _prop, _max_phi, _max_param_depth); - #pragma omp for schedule(dynamic) + #pragma omp for schedule(monotonic: dynamic) for(auto feat_1 = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat_1 < _phi.end(); feat_1 += _mpi_comm->size()) { generate_non_param_feats(feat_1, next_phi_private, _phi.begin(), feat_ind, l_bound, u_bound); @@ -586,7 +586,7 @@ void FeatureSpace::generate_feature_space() #pragma omp parallel firstprivate(feat_ind, l_bound, u_bound) { std::vector<node_ptr> next_phi_private; - #pragma omp for schedule(dynamic) + #pragma omp for schedule(monotonic: dynamic) for(auto feat_1 = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat_1 < _phi.end(); feat_1 += _mpi_comm->size()) { generate_non_param_feats(feat_1, next_phi_private, _phi.begin(), feat_ind, l_bound, u_bound); @@ -967,7 +967,7 @@ void FeatureSpace::project_generated(const double* prop, const int size, std::ve } #endif - #pragma omp for schedule(dynamic) + #pragma omp for schedule(monotonic: dynamic) for(auto feat = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat < _phi.end(); feat += _mpi_comm->size()) { unsigned long int feat_ind = _phi.size() + _n_sis_select * (omp_get_num_threads() + _mpi_comm->size()); -- GitLab