From 6c701a465a11ab3febaf59c76c71e30fbc281bd7 Mon Sep 17 00:00:00 2001 From: Thomas <purcell@fhi-berlin.mpg.de> Date: Fri, 25 Jun 2021 09:29:58 +0200 Subject: [PATCH] Remove LossFunction firstprivate This seems to not be feasable with OpenMP --- src/feature_creation/feature_space/FeatureSpace.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/feature_creation/feature_space/FeatureSpace.cpp b/src/feature_creation/feature_space/FeatureSpace.cpp index b9c77170..c89598ee 100644 --- a/src/feature_creation/feature_space/FeatureSpace.cpp +++ b/src/feature_creation/feature_space/FeatureSpace.cpp @@ -983,9 +983,9 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve int worst_score_ind = std::max_element(scores_sel.begin(), scores_sel.end()) - scores_sel.begin(); double worst_score = scores_sel[worst_score_ind]; - #pragma omp parallel firstprivate(worst_score, worst_score_ind, loss, scores_sel_all) + #pragma omp parallel firstprivate(worst_score, worst_score_ind, scores_sel_all) { - loss = loss_function_util::copy(loss); + std::shared_ptr<LossFunction> loss_copy = loss_function_util::copy(loss); std::vector<node_ptr> phi_sel_private(phi_sel); std::vector<double> scores_sel_private(scores_sel); int index_base = _phi.size() + _n_sis_select * (omp_get_thread_num() + _mpi_comm->size()); @@ -995,7 +995,7 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve std::shared_ptr<NLOptimizer> reparam_optimizer; if(_reparam_residual) { - std::vector<double> prop_vec(loss->prop_project()); + std::vector<double> prop_vec(loss_copy->prop_project()); reparam_optimizer = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, prop_vec, _max_phi, _max_param_depth); } else @@ -1037,7 +1037,7 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve node_value_arrs::clear_temp_reg_thread(); std::vector<double> scores(generated_phi.size()); - project_funcs::project_loss_no_omp(loss, generated_phi, scores.data()); + project_funcs::project_loss_no_omp(loss_copy, generated_phi, scores.data()); std::vector<int> inds = util_funcs::argsort<double>(scores); -- GitLab