link latencies.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3609
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
FLEXML = @FLEXML@
GRAMINE_MODE_FALSE = @GRAMINE_MODE_FALSE@
GRAMINE_MODE_TRUE = @GRAMINE_MODE_TRUE@
FLEXML = @FLEXML@
GRAMINE_MODE_FALSE = @GRAMINE_MODE_FALSE@
GRAMINE_MODE_TRUE = @GRAMINE_MODE_TRUE@
+GRAS_ARCH_32_BITS_FALSE = @GRAS_ARCH_32_BITS_FALSE@
+GRAS_ARCH_32_BITS_TRUE = @GRAS_ARCH_32_BITS_TRUE@
GRAS_DEP = @GRAS_DEP@
GREP = @GREP@
GTNETS_CFLAGS = @GTNETS_CFLAGS@
GRAS_DEP = @GRAS_DEP@
GREP = @GREP@
GTNETS_CFLAGS = @GTNETS_CFLAGS@
ac_configure_args = @ac_configure_args@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_configure_args = @ac_configure_args@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
lmm_variable_t var, double value);
void lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
double bound);
lmm_variable_t var, double value);
void lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
double bound);
+
+/** \brief Add the value delta to var->df the sum of latencys.
+ *
+ * \param sys the lmm_system_t
+ * \param var the lmm_variable_t
+ *
+ * Add the value delta to var->df (the sum of latencys associated to the
+ * flow). Whenever this function is called a change is signed in the system. To
+ * avoid false system changing detection it is a good idea to test
+ * (delta != 0) before calling it.
+ *
+ */
+void lmm_update_variable_latency(lmm_system_t sys, lmm_variable_t var,
+ double delta);
+
+
+
XBT_PUBLIC(void) lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
double weight);
double lmm_get_variable_weight(lmm_variable_t var);
XBT_PUBLIC(void) lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
double weight);
double lmm_get_variable_weight(lmm_variable_t var);
var->weight = weight;
var->bound = bound;
var->value = 0.0;
var->weight = weight;
var->bound = bound;
var->value = 0.0;
if(weight) xbt_swag_insert_at_head(var,&(sys->variable_set));
else xbt_swag_insert_at_tail(var,&(sys->variable_set));
XBT_OUT;
if(weight) xbt_swag_insert_at_head(var,&(sys->variable_set));
else xbt_swag_insert_at_tail(var,&(sys->variable_set));
XBT_OUT;
+void lmm_update_variable_latency(lmm_system_t sys, lmm_variable_t var,
+ double delta)
+{
+ sys->modified = 1;
+ var->df += delta;
+}
+
void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
double weight)
{
void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
double weight)
{
double df; /* Total delay of flow */
void *id;
int index;
double df; /* Total delay of flow */
void *id;
int index;
- double (* func_f) (struct lmm_variable *, double); /* f */
- double (* func_fp) (struct lmm_variable *, double); /* f' */
- double (* func_fpi) (struct lmm_variable *, double); /* (f')^{-1} */
- double (* func_fpip) (struct lmm_variable *, double); /* ((f')^{-1})' */
- double func_fi;
+ double (* func_f) (struct lmm_variable *var, double x); /* f */
+ double (* func_fp) (struct lmm_variable *var, double x); /* f' */
+ double (* func_fpi) (struct lmm_variable *var, double x); /* (f')^{-1} */
+ double (* func_fpip) (struct lmm_variable *var, double x); /* ((f')^{-1})' */
} s_lmm_variable_t;
typedef struct lmm_system {
} s_lmm_variable_t;
typedef struct lmm_system {
if(action->suspended==0)
lmm_update_variable_weight(maxmin_system, action->variable,
action->lat_current);
if(action->suspended==0)
lmm_update_variable_weight(maxmin_system, action->variable,
action->lat_current);
+ lmm_update_variable_latency(maxmin_system, action->variable, delta);
+
+
}
} else if (event_type == nw_link->state_event) {
if (value > 0)
}
} else if (event_type == nw_link->state_event) {
if (value > 0)
return ((cpu_KCCFLN05_t) cpu)->power_current;
}
return ((cpu_KCCFLN05_t) cpu)->power_current;
}
static surf_action_t communicate(void *src, void *dst, double size, double rate)
{
surf_action_workstation_KCCFLN05_t action = NULL;
static surf_action_t communicate(void *src, void *dst, double size, double rate)
{
surf_action_workstation_KCCFLN05_t action = NULL;
lmm_update_variable_bound(maxmin_system, action->variable, action->rate);
}
lmm_update_variable_bound(maxmin_system, action->variable, action->rate);
}
+ lmm_update_variable_latency(maxmin_system, action->variable, action->latency);
+
for (i = 0; i < route_size; i++)
lmm_expand(maxmin_system, route->links[i]->constraint, action->variable, 1.0);
if (card_src->bus)
for (i = 0; i < route_size; i++)
lmm_expand(maxmin_system, route->links[i]->constraint, action->variable, 1.0);
if (card_src->bus)