From: Martin Quinson Date: Thu, 15 Jun 2017 15:30:59 +0000 (+0200) Subject: LMM: add a function to see how many variables are active on a constraint X-Git-Tag: v3.16~85 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/f601750c63a340979328ed9817fe225c5ce43959?hp=befbbbe1fbb31663a8f91e24ce12df271cf4ae79 LMM: add a function to see how many variables are active on a constraint --- diff --git a/src/include/surf/maxmin.h b/src/include/surf/maxmin.h index 7365bfaa41..df7571f3dc 100644 --- a/src/include/surf/maxmin.h +++ b/src/include/surf/maxmin.h @@ -203,6 +203,8 @@ XBT_PUBLIC(void) lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst); */ XBT_PUBLIC(double) lmm_constraint_get_usage(lmm_constraint_t cnst); +XBT_PUBLIC(int) lmm_constraint_get_variable_amount(lmm_constraint_t cnst); + /** * @brief Sets the concurrency limit for this constraint * @param cnst A constraint diff --git a/src/surf/maxmin.cpp b/src/surf/maxmin.cpp index 3d9da37aec..5876ad7d40 100644 --- a/src/surf/maxmin.cpp +++ b/src/surf/maxmin.cpp @@ -1245,6 +1245,18 @@ double lmm_constraint_get_usage(lmm_constraint_t cnst) { } return usage; } +int lmm_constraint_get_variable_amount(lmm_constraint_t cnst) { + int usage = 0; + xbt_swag_t elem_list = &(cnst->enabled_element_set); + void *_elem; + + xbt_swag_foreach(_elem, elem_list) { + lmm_element_t elem = (lmm_element_t)_elem; + if (elem->value > 0) + usage++; + } + return usage; +} void lmm_check_concurrency(lmm_system_t sys){ //These checks are very expensive, so do them only if we want to debug SURF LMM