From 04574c7213b2d3a0bd914e10cf180e632d3881ae Mon Sep 17 00:00:00 2001 From: Fabien Chaix Date: Mon, 2 Dec 2019 14:18:44 +0200 Subject: [PATCH] Clean up and use of vector for cleaner allocation --- src/kernel/lmm/maxmin.cpp | 39 +++++---------------------------------- src/kernel/lmm/maxmin.hpp | 7 +++---- 2 files changed, 8 insertions(+), 38 deletions(-) diff --git a/src/kernel/lmm/maxmin.cpp b/src/kernel/lmm/maxmin.cpp index 0eac307a9b..4168178fb5 100644 --- a/src/kernel/lmm/maxmin.cpp +++ b/src/kernel/lmm/maxmin.cpp @@ -137,8 +137,7 @@ void System::var_free(Variable* var) XBT_OUT(); } -System::System(bool selective_update) : cnst_light_tab(NULL),cnst_light_max_size(0), - selective_update_active(selective_update) +System::System(bool selective_update) : selective_update_active(selective_update) { XBT_DEBUG("Setting selective_update_active flag to %d", selective_update_active); @@ -160,9 +159,6 @@ System::~System() while ((cnst = extract_constraint())) cnst_free(cnst); - if(cnst_light_tab) - delete[] cnst_light_tab; - xbt_mallocator_free(variable_mallocator_); delete modified_set_; } @@ -508,13 +504,9 @@ template void System::lmm_solve(CnstList& cnst_list) double min_usage = -1; double min_bound = -1; - if(cnst_list.size()>cnst_light_max_size){ - cnst_light_max_size=cnst_list.size()*2; - if(cnst_light_tab) - delete [] cnst_light_tab; - cnst_light_tab=new ConstraintLight[cnst_light_max_size](); - } - + XBT_DEBUG("Active constraints : %zu", cnst_list.size()); + cnst_light_vec.reserve(cnst_list.size()); + ConstraintLight* cnst_light_tab = cnst_light_vec.data(); int cnst_light_num = 0; for (Constraint& cnst : cnst_list) { @@ -525,7 +517,7 @@ template void System::lmm_solve(CnstList& cnst_list) continue; cnst.usage_ = 0; for (Element& elem : cnst.enabled_element_set_) { - xbt_assert(elem.variable->sharing_penalty_ > 0); + xbt_assert(elem.variable->sharing_penalty_ > 0.0); elem.variable->value_ = 0.0; if (elem.consumption_weight > 0) { if (cnst.sharing_policy_ != s4u::Link::SharingPolicy::FATPIPE) @@ -555,31 +547,10 @@ template void System::lmm_solve(CnstList& cnst_list) } } -#if MAXMIN_PROF==CSV_PROF - start_init2 = high_resolution_clock::now();//FABIENDBG -#endif - saturated_variable_set_update(cnst_light_tab, saturated_constraints, this); - - -#if MAXMIN_PROF==CSV_PROF - high_resolution_clock::time_point start_main = high_resolution_clock::now();//FABIENDBG - int NVars=saturated_variable_set.size();//FABIENDBG - float init_duration1=duration_cast >(start_init2 - start_init).count();//FABIENDBG - float init_duration2=duration_cast >(start_main - start_init2).count();//FABIENDBG - float loop_duration;//FABIENDBG - float loop_max=0;//FABIENDBG - float loop_min=1E9;//FABIENDBG - float loop_avg=0;//FABIENDBG - float loop_std=0;//FABIENDBG - int loop_count=0;//FABIENDBG - high_resolution_clock::time_point start_loop,end_loop;//FABIENDBG -#endif /* Saturated variables update */ do { - high_resolution_clock::time_point start_loop = high_resolution_clock::now();//FABIENDBG - /* Fix the variables that have to be */ auto& var_list = saturated_variable_set; for (Variable const& var : var_list) { diff --git a/src/kernel/lmm/maxmin.hpp b/src/kernel/lmm/maxmin.hpp index f1196b72aa..a473208124 100644 --- a/src/kernel/lmm/maxmin.hpp +++ b/src/kernel/lmm/maxmin.hpp @@ -533,10 +533,9 @@ public: private: typedef std::vector dyn_light_t; - - //Data used in lmm::solve - ConstraintLight* cnst_light_tab; - unsigned int cnst_light_max_size; + + //Data used in lmm::solve + std::vector cnst_light_vec; dyn_light_t saturated_constraints; bool selective_update_active; /* flag to update partially the system only selecting changed portions */ -- 2.20.1