From 2fb451178d802238fe9ab85697b84a4153793c94 Mon Sep 17 00:00:00 2001 From: alegrand Date: Thu, 23 Aug 2007 12:22:17 +0000 Subject: [PATCH 1/1] Fix parallel task problem with SIMIX raised by F. Suter git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@4104 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/simix/simix.h | 5 ++--- src/simix/smx_action.c | 19 +++++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/include/simix/simix.h b/src/include/simix/simix.h index ec89b6fe73..8c58a85e63 100644 --- a/src/include/simix/simix.h +++ b/src/include/simix/simix.h @@ -135,10 +135,9 @@ XBT_PUBLIC(double) SIMIX_action_get_remains(smx_action_t action); XBT_PUBLIC(e_surf_action_state_t) SIMIX_action_get_state(smx_action_t action); -/*Not implemented yet */ XBT_PUBLIC(smx_action_t) SIMIX_action_parallel_execute(char * name, - int workstation_nb, - void **workstation_list, + int host_nb, + smx_host_t *host_list, double *computation_amount, double *communication_amount, double amount, diff --git a/src/simix/smx_action.c b/src/simix/smx_action.c index c56f305797..027acb945e 100644 --- a/src/simix/smx_action.c +++ b/src/simix/smx_action.c @@ -261,12 +261,14 @@ double SIMIX_action_get_remains(smx_action_t action) return action->simdata->surf_action->remains; } -smx_action_t SIMIX_action_parallel_execute(char *name, int workstation_nb, - void **workstation_list, +smx_action_t SIMIX_action_parallel_execute(char *name, int host_nb, + smx_host_t *host_list, double *computation_amount, double *communication_amount, double amount, double rate) { + void **workstation_list = NULL; + int i; /* alloc structures */ smx_action_t act = xbt_new0(s_smx_action_t, 1); @@ -277,16 +279,21 @@ smx_action_t SIMIX_action_parallel_execute(char *name, int workstation_nb, /* initialize them */ act->name = xbt_strdup(name); - /* set communication */ + /* set action */ + + workstation_list = xbt_new0(void *,host_nb); + for (i = 0; i < host_nb; i++) + workstation_list[i] = host_list[i]->simdata->host; + simdata->surf_action = surf_workstation_model->extension_public-> - execute_parallel_task(workstation_nb, workstation_list, + execute_parallel_task(host_nb, workstation_list, computation_amount, communication_amount, amount, rate); surf_workstation_model->common_public->action_set_data(simdata-> - surf_action, - act); + surf_action, + act); return act; } -- 2.20.1