A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix int overflow on 32 arch
[simgrid.git]
/
src
/
surf
/
network.c
diff --git
a/src/surf/network.c
b/src/surf/network.c
index
2eee39c
..
c959b37
100644
(file)
--- a/
src/surf/network.c
+++ b/
src/surf/network.c
@@
-6,7
+6,7
@@
* highly dependent on the maxmin lmm module.
*/
* highly dependent on the maxmin lmm module.
*/
-/* Copyright (c) 200
9, 2010, 2011
. The SimGrid Team.
+/* Copyright (c) 200
4-2013
. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
@@
-81,7
+81,8
@@
static double constant_bandwidth_constraint(double rate, double bound,
static int factor_cmp(const void *pa, const void *pb)
{
static int factor_cmp(const void *pa, const void *pb)
{
- return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor);
+ return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor) ? 1 :
+ (((s_smpi_factor_t*)pa)->factor < ((s_smpi_factor_t*)pb)->factor) ? -1 : 0;
}
}
@@
-126,12
+127,12
@@
static double smpi_bandwidth_factor(double size)
double current=1.0;
xbt_dynar_foreach(smpi_bw_factor, iter, fact) {
if (size <= fact.factor) {
double current=1.0;
xbt_dynar_foreach(smpi_bw_factor, iter, fact) {
if (size <= fact.factor) {
- XBT_DEBUG("%
l
f <= %ld return %f", size, fact.factor, current);
+ XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current);
return current;
}else
current=fact.value;
}
return current;
}else
current=fact.value;
}
- XBT_DEBUG("%
l
f > %ld return %f", size, fact.factor, current);
+ XBT_DEBUG("%f > %ld return %f", size, fact.factor, current);
return current;
}
return current;
}
@@
-147,12
+148,12
@@
static double smpi_latency_factor(double size)
double current=1.0;
xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
if (size <= fact.factor) {
double current=1.0;
xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
if (size <= fact.factor) {
- XBT_DEBUG("%
l
f <= %ld return %f", size, fact.factor, current);
+ XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current);
return current;
}else
current=fact.value;
}
return current;
}else
current=fact.value;
}
- XBT_DEBUG("%
l
f > %ld return %f", size, fact.factor, current);
+ XBT_DEBUG("%f > %ld return %f", size, fact.factor, current);
return current;
}
return current;
}
@@
-325,18
+326,18
@@
int net_get_link_latency_limited(surf_action_t action)
}
#endif
}
#endif
-static double net_share_resources_full(double now)
+static double net_share_resources_full(
surf_model_t network_model,
double now)
{
s_surf_action_lmm_t s_action;
surf_action_network_CM02_t action = NULL;
xbt_swag_t running_actions =
{
s_surf_action_lmm_t s_action;
surf_action_network_CM02_t action = NULL;
xbt_swag_t running_actions =
-
surf_
network_model->states.running_action_set;
+ network_model->states.running_action_set;
double min;
min = generic_maxmin_share_resources(running_actions,
xbt_swag_offset(s_action,
variable),
double min;
min = generic_maxmin_share_resources(running_actions,
xbt_swag_offset(s_action,
variable),
-
surf_
network_model->model_private->maxmin_system,
+ network_model->model_private->maxmin_system,
network_solve);
#define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + xbt_swag_offset(s_action, variable) )))
network_solve);
#define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + xbt_swag_offset(s_action, variable) )))
@@
-359,19
+360,19
@@
static double net_share_resources_full(double now)
return min;
}
return min;
}
-static double net_share_resources_lazy(double now)
+static double net_share_resources_lazy(
surf_model_t network_model,
double now)
{
{
- return generic_share_resources_lazy(now,
surf_
network_model);
+ return generic_share_resources_lazy(now, network_model);
}
}
-static void net_update_actions_state_full(double now, double delta)
+static void net_update_actions_state_full(
surf_model_t network_model,
double now, double delta)
{
{
- generic_update_actions_state_full(now, delta,
surf_
network_model);
+ generic_update_actions_state_full(now, delta, network_model);
}
}
-static void net_update_actions_state_lazy(double now, double delta)
+static void net_update_actions_state_lazy(
surf_model_t network_model,
double now, double delta)
{
{
- generic_update_actions_state_lazy(now, delta,
surf_
network_model);
+ generic_update_actions_state_lazy(now, delta, network_model);
}
static void net_update_resource_state(void *id,
}
static void net_update_resource_state(void *id,
@@
-379,8
+380,8
@@
static void net_update_resource_state(void *id,
double value, double date)
{
link_CM02_t nw_link = id;
double value, double date)
{
link_CM02_t nw_link = id;
- /* printf("[" "%
l
g" "] Asking to update network card \"%s\" with value " */
- /* "%
l
g" " for event %p\n", surf_get_clock(), nw_link->name, */
+ /* printf("[" "%g" "] Asking to update network card \"%s\" with value " */
+ /* "%g" " for event %p\n", surf_get_clock(), nw_link->name, */
/* value, event_type); */
if (event_type == nw_link->lmm_resource.power.event) {
/* value, event_type); */
if (event_type == nw_link->lmm_resource.power.event) {
@@
-652,18
+653,18
@@
static int net_link_shared(const void *link)
lmm_constraint_is_shared(((surf_resource_lmm_t) link)->constraint);
}
lmm_constraint_is_shared(((surf_resource_lmm_t) link)->constraint);
}
-static void net_finalize(
void
)
+static void net_finalize(
surf_model_t network_model
)
{
{
- lmm_system_free(
surf_
network_model->model_private->maxmin_system);
-
surf_
network_model->model_private->maxmin_system = NULL;
+ lmm_system_free(network_model->model_private->maxmin_system);
+ network_model->model_private->maxmin_system = NULL;
- if (
surf_
network_model->model_private->update_mechanism == UM_LAZY) {
- xbt_heap_free(
surf_
network_model->model_private->action_heap);
- xbt_swag_free(
surf_
network_model->model_private->modified_set);
+ if (network_model->model_private->update_mechanism == UM_LAZY) {
+ xbt_heap_free(network_model->model_private->action_heap);
+ xbt_swag_free(network_model->model_private->modified_set);
}
}
- surf_model_exit(
surf_
network_model);
-
surf_
network_model = NULL;
+ surf_model_exit(network_model);
+ network_model = NULL;
xbt_dict_free(&gap_lookup);
xbt_dynar_free(&smpi_bw_factor);
xbt_dict_free(&gap_lookup);
xbt_dynar_free(&smpi_bw_factor);
@@
-680,7
+681,7
@@
static void smpi_gap_append(double size, const link_CM02_t link,
if (sg_sender_gap > 0.0) {
if (!gap_lookup) {
if (sg_sender_gap > 0.0) {
if (!gap_lookup) {
- gap_lookup = xbt_dict_new
(
);
+ gap_lookup = xbt_dict_new
_homogeneous(NULL
);
}
fifo = (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup, src);
action->sender.gap = 0.0;
}
fifo = (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup, src);
action->sender.gap = 0.0;
@@
-736,7
+737,7
@@
static void set_update_mechanism(void)
{
char *optim = xbt_cfg_get_string(_sg_cfg_set, "network/optim");
int select =
{
char *optim = xbt_cfg_get_string(_sg_cfg_set, "network/optim");
int select =
- xbt_cfg_get_
int
(_sg_cfg_set, "network/maxmin_selective_update");
+ xbt_cfg_get_
boolean
(_sg_cfg_set, "network/maxmin_selective_update");
if (!strcmp(optim, "Full")) {
surf_network_model->model_private->update_mechanism = UM_FULL;
if (!strcmp(optim, "Full")) {
surf_network_model->model_private->update_mechanism = UM_FULL;
@@
-762,6
+763,7
@@
static void surf_network_model_init_internal(void)
set_update_mechanism();
surf_network_model->name = "network";
set_update_mechanism();
surf_network_model->name = "network";
+ surf_network_model->type = SURF_MODEL_TYPE_NETWORK;
surf_network_model->action_unref = surf_action_unref;
surf_network_model->action_cancel = surf_action_cancel;
surf_network_model->action_recycle = net_action_recycle;
surf_network_model->action_unref = surf_action_unref;
surf_network_model->action_cancel = surf_action_cancel;
surf_network_model->action_recycle = net_action_recycle;
@@
-795,7
+797,11
@@
static void surf_network_model_init_internal(void)
surf_network_model->suspend = surf_action_suspend;
surf_network_model->resume = surf_action_resume;
surf_network_model->is_suspended = surf_action_is_suspended;
surf_network_model->suspend = surf_action_suspend;
surf_network_model->resume = surf_action_resume;
surf_network_model->is_suspended = surf_action_is_suspended;
- surf_cpu_model->set_max_duration = surf_action_set_max_duration;
+
+ xbt_assert(surf_cpu_model_pm);
+ xbt_assert(surf_cpu_model_vm);
+ surf_cpu_model_pm->set_max_duration = surf_action_set_max_duration;
+ surf_cpu_model_vm->set_max_duration = surf_action_set_max_duration;
surf_network_model->extension.network.communicate = net_communicate;
surf_network_model->extension.network.get_route = net_get_route;
surf_network_model->extension.network.communicate = net_communicate;
surf_network_model->extension.network.get_route = net_get_route;