X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e9af650f7b0e1eb307aecd28d81f16c007421237..5a00c16b5ea7fd8c37f39544914acfcb0f6e07b2:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index f8b2760971..a552aa13fb 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -7,13 +7,14 @@ #include "xbt/ex.h" #include "xbt/dict.h" +#include "gras_config.h" #include "workstation_private.h" #include "cpu_private.h" #include "network_private.h" surf_workstation_resource_t surf_workstation_resource = NULL; - xbt_dict_t workstation_set = NULL; +static xbt_dict_t parallel_task_network_link_set = NULL; static workstation_CLM03_t workstation_new(const char *name, void *cpu, void *card) @@ -161,10 +162,10 @@ static void update_actions_state(double now, double delta) */ xbt_swag_foreach_safe(action, next_action, running_actions) { - surf_double_update(&(action->generic_action.remains), + double_update(&(action->generic_action.remains), lmm_variable_getvalue(action->variable) * delta); if (action->generic_action.max_duration != NO_MAX_DURATION) - surf_double_update(&(action->generic_action.max_duration), delta); + double_update(&(action->generic_action.max_duration), delta); if ((action->generic_action.remains <= 0) && (lmm_get_variable_weight(action->variable)>0)) { action->generic_action.finish = surf_get_clock(); @@ -296,6 +297,16 @@ static double get_available_speed(void *workstation) get_available_speed(((workstation_CLM03_t) workstation)->cpu); } +static surf_action_t execute_parallel_task_bogus (int workstation_nb, + void **workstation_list, + double *computation_amount, + double *communication_amount, + double amount, + double rate) +{ + DIE_IMPOSSIBLE; +} + static surf_action_t execute_parallel_task (int workstation_nb, void **workstation_list, double *computation_amount, @@ -305,17 +316,11 @@ static surf_action_t execute_parallel_task (int workstation_nb, { surf_action_parallel_task_CSL05_t action = NULL; int i, j, k; - static xbt_dict_t network_link_set; - static int first_run = 1; int nb_link = 0; int nb_host = 0; - if (first_run) { - network_link_set = xbt_dict_new_ext(workstation_nb * workstation_nb * 10); - first_run = 0; - } - else { - xbt_dict_reset(network_link_set); + if (parallel_task_network_link_set == NULL) { + parallel_task_network_link_set = xbt_dict_new_ext(workstation_nb * workstation_nb * 10); } /* Compute the number of affected resources... */ @@ -328,12 +333,13 @@ static surf_action_t execute_parallel_task (int workstation_nb, if(communication_amount[i*workstation_nb+j]>0) for(k=0; k< route_size; k++) { - xbt_dict_set(network_link_set, route[k]->name, route[k], NULL); + xbt_dict_set(parallel_task_network_link_set, route[k]->name, route[k], NULL); } } } - nb_link = xbt_dict_length(network_link_set); + nb_link = xbt_dict_length(parallel_task_network_link_set); + xbt_dict_reset(parallel_task_network_link_set); for (i = 0; i0) nb_host++; @@ -496,7 +502,7 @@ static void surf_workstation_resource_init_internal(void) surf_workstation_resource->extension_public->get_available_speed = get_available_speed; surf_workstation_resource->extension_public->communicate = communicate; surf_workstation_resource->extension_public->execute_parallel_task = - execute_parallel_task; + execute_parallel_task_bogus; surf_workstation_resource->extension_public->get_route = get_route; surf_workstation_resource->extension_public->get_route_size = get_route_size; surf_workstation_resource->extension_public->get_link_name = get_link_name; @@ -520,24 +526,31 @@ static void surf_workstation_resource_init_internal(void) /* } */ void surf_workstation_resource_init_CLM03(const char *filename) { -/* int i ; */ -/* surf_resource_t resource = NULL; */ - surf_workstation_resource_init_internal(); surf_cpu_resource_init_Cas01(filename); surf_network_resource_init_CM02(filename); create_workstations(); xbt_dynar_push(resource_list, &surf_workstation_resource); -/* xbt_dynar_foreach(resource_list, i, resource) { */ -/* if(resource==surf_cpu_resource) { */ -/* xbt_dynar_remove_at(resource_list, i, NULL); */ -/* i--; */ -/* continue; */ -/* } */ -/* if(resource==surf_network_resource) { */ -/* xbt_dynar_remove_at(resource_list, i, NULL); */ -/* i--; */ -/* continue; */ -/* } */ -/* } */ +} + +#ifdef USE_GTNETS +/* KF. Use GTNetS for the network. */ +void surf_workstation_resource_init_GTNETS(const char *filename) +{ + surf_workstation_resource_init_internal(); + surf_cpu_resource_init_Cas01(filename); + surf_network_resource_init_GTNETS(filename); + create_workstations(); + xbt_dynar_push(resource_list, &surf_workstation_resource); +} +#endif + +void surf_workstation_resource_init_compound(const char *filename) +{ + + xbt_assert0(surf_cpu_resource,"No CPU resource defined yet!"); + xbt_assert0(surf_network_resource,"No network resource defined yet!"); + surf_workstation_resource_init_internal(); + create_workstations(); + xbt_dynar_push(resource_list, &surf_workstation_resource); }