X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/86e534066dafbcbb2284a75ad76d8258a329d226..265e908745398dd4e9cc55187aa267650468c57c:/src/kernel/lmm/maxmin.hpp diff --git a/src/kernel/lmm/maxmin.hpp b/src/kernel/lmm/maxmin.hpp index 6c08ad07d6..f5006fcb42 100644 --- a/src/kernel/lmm/maxmin.hpp +++ b/src/kernel/lmm/maxmin.hpp @@ -6,14 +6,15 @@ #ifndef SURF_MAXMIN_HPP #define SURF_MAXMIN_HPP +#include "simgrid/kernel/resource/Action.hpp" #include "src/internal_config.h" -#include "src/kernel/resource/Action.hpp" #include "src/surf/surf_interface.hpp" #include "surf/surf.hpp" #include "xbt/asserts.h" #include "xbt/mallocator.h" #include "xbt/misc.h" #include "xbt/utility.hpp" + #include #include #include @@ -138,29 +139,28 @@ namespace lmm { * @brief Solve the lmm system * @param sys The lmm system to solve */ -XBT_PUBLIC(void) lmm_solve(lmm_system_t sys); +XBT_PUBLIC void lmm_solve(lmm::System* sys); -XBT_PUBLIC(void) lagrange_solve(lmm_system_t sys); -XBT_PUBLIC(void) bottleneck_solve(lmm_system_t sys); +XBT_PUBLIC void lagrange_solve(lmm::System* sys); +XBT_PUBLIC void bottleneck_solve(lmm::System* sys); /** Default functions associated to the chosen protocol. When using the lagrangian approach. */ -XBT_PUBLIC(void) -set_default_protocol_function(double (*func_f)(const Variable& var, double x), - double (*func_fp)(const Variable& var, double x), - double (*func_fpi)(const Variable& var, double x)); +XBT_PUBLIC void set_default_protocol_function(double (*func_f)(const Variable& var, double x), + double (*func_fp)(const Variable& var, double x), + double (*func_fpi)(const Variable& var, double x)); -XBT_PUBLIC(double) func_reno_f(const Variable& var, double x); -XBT_PUBLIC(double) func_reno_fp(const Variable& var, double x); -XBT_PUBLIC(double) func_reno_fpi(const Variable& var, double x); +XBT_PUBLIC double func_reno_f(const Variable& var, double x); +XBT_PUBLIC double func_reno_fp(const Variable& var, double x); +XBT_PUBLIC double func_reno_fpi(const Variable& var, double x); -XBT_PUBLIC(double) func_reno2_f(const Variable& var, double x); -XBT_PUBLIC(double) func_reno2_fp(const Variable& var, double x); -XBT_PUBLIC(double) func_reno2_fpi(const Variable& var, double x); +XBT_PUBLIC double func_reno2_f(const Variable& var, double x); +XBT_PUBLIC double func_reno2_fp(const Variable& var, double x); +XBT_PUBLIC double func_reno2_fpi(const Variable& var, double x); -XBT_PUBLIC(double) func_vegas_f(const Variable& var, double x); -XBT_PUBLIC(double) func_vegas_fp(const Variable& var, double x); -XBT_PUBLIC(double) func_vegas_fpi(const Variable& var, double x); +XBT_PUBLIC double func_vegas_f(const Variable& var, double x); +XBT_PUBLIC double func_vegas_fp(const Variable& var, double x); +XBT_PUBLIC double func_vegas_fpi(const Variable& var, double x); /** * @brief LMM element @@ -169,8 +169,7 @@ XBT_PUBLIC(double) func_vegas_fpi(const Variable& var, double x); * Then, it is used to list all variables involved in constraint through constraint's xxx_element_set lists, or * vice-versa list all constraints for a given variable. */ -XBT_PUBLIC_CLASS Element -{ +class XBT_PUBLIC Element { public: int get_concurrency() const; void decrease_concurrency(); @@ -207,8 +206,7 @@ struct ConstraintLight { * \li Active elements which variable's weight is non-zero (i.e. it is enabled) AND its element value is non-zero. * LMM_solve iterates over active elements during resolution, dynamically making them active or unactive. */ -XBT_PUBLIC_CLASS Constraint -{ +class XBT_PUBLIC Constraint { public: Constraint() = delete; Constraint(void* id_value, double bound_value); @@ -334,10 +332,9 @@ private: * When something prevents us from enabling a variable, we "stage" the weight that we would have like to set, so that as * soon as possible we enable the variable with desired weight */ -XBT_PUBLIC_CLASS Variable -{ +class XBT_PUBLIC Variable { public: - void initialize(simgrid::surf::Action* id_value, double sharing_weight_value, double bound_value, + void initialize(simgrid::kernel::resource::Action * id_value, double sharing_weight_value, double bound_value, int number_of_constraints, unsigned visited_value); /** @@ -382,7 +379,7 @@ public: * @brief Get the data associated to a variable * @return The data associated to the variable */ - simgrid::surf::Action* get_id() const { return id; } + simgrid::kernel::resource::Action* get_id() const { return id; } /** * @brief Get the weight of a variable @@ -415,7 +412,7 @@ public: double bound; double value; short int concurrency_share; /* The maximum number of elements that variable will add to a constraint */ - simgrid::surf::Action* id; + simgrid::kernel::resource::Action* id; int id_int; unsigned visited; /* used by System::update_modified_set() */ /* \begin{For Lagrange only} */ @@ -443,8 +440,7 @@ inline void Element::make_inactive() /** * @brief LMM system */ -XBT_PUBLIC_CLASS System -{ +class XBT_PUBLIC System { public: /** * @brief Create a new Linear MaxMim system @@ -468,7 +464,8 @@ public: * @param bound The maximum value of the variable (-1.0 if no maximum value) * @param number_of_constraints The maximum number of constraint to associate to the variable */ - Variable* variable_new(simgrid::surf::Action * id, double weight_value, double bound, int number_of_constraints); + Variable* variable_new(simgrid::kernel::resource::Action * id, double weight_value, double bound, + int number_of_constraints); /** * @brief Free a variable @@ -604,9 +601,9 @@ public: &Constraint::saturated_constraint_set_hook>> saturated_constraint_set; - simgrid::surf::ActionLmmListPtr keep_track; + simgrid::kernel::resource::Action::ModifiedSet* modified_set_ = nullptr; - void (*solve_fun)(lmm_system_t self); + void (*solve_fun)(lmm::System* self); private: bool selective_update_active; /* flag to update partially the system only selecting changed portions */