From: mquinson Date: Wed, 24 Jun 2009 19:54:45 +0000 (+0000) Subject: SMPI: kill some free() from the smpi_process_finalize of the last leaving process... X-Git-Tag: SVN~1297 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1c19e8ee59414e654e441b692dda9231c3c9348d SMPI: kill some free() from the smpi_process_finalize of the last leaving process to smpi_global_destroy; kill now useless process_running variable git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6343 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/smpi/private.h b/src/smpi/private.h index ff6bcb623f..63be652dcb 100644 --- a/src/smpi/private.h +++ b/src/smpi/private.h @@ -95,8 +95,6 @@ typedef struct smpi_global_t { smx_process_t *main_processes; - int running_hosts_count; //FIXME: killme - xbt_os_timer_t timer; smx_mutex_t timer_mutex; smx_cond_t timer_cond; diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index eb9436f598..10a02c1b9f 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -53,8 +53,6 @@ void smpi_process_init() int i; smpi_host_data_t hdata; - smpi_global->running_hosts_count++; - // initialize some local variables host = SIMIX_host_self(); @@ -87,11 +85,8 @@ void smpi_process_init() void smpi_process_finalize() { - int i; smpi_host_data_t hdata = SIMIX_host_get_data(SIMIX_host_self()); - i = --smpi_global->running_hosts_count; - hdata->finalize = 2; /* Tell sender and receiver to quit */ SIMIX_process_resume(hdata->sender); SIMIX_process_resume(hdata->receiver); @@ -102,35 +97,6 @@ void smpi_process_finalize() SIMIX_mutex_destroy(hdata->mutex); SIMIX_cond_destroy(hdata->cond); xbt_fifo_free(hdata->pending_recv_request_queue); - - - if (0 >= i) { - - // wake up senders/receivers - /* MQ: (FIXME) Don't do so: it breaks since some hosts are already gone - for (i = 0; i < smpi_global->host_count; i++) { - smpi_host_data_t remote_hdata = SIMIX_process_get_data(smpi_global->main_processes[i]); - - if (SIMIX_process_is_suspended(remote_hdata->sender)) - SIMIX_process_resume(remote_hdata->sender); - - if (SIMIX_process_is_suspended(remote_hdata->receiver)) - SIMIX_process_resume(remote_hdata->receiver); - }*/ - - SIMIX_mutex_destroy(smpi_mpi_global->mpi_comm_world->barrier_mutex); - SIMIX_cond_destroy(smpi_mpi_global->mpi_comm_world->barrier_cond); - xbt_free(smpi_mpi_global->mpi_comm_world); - - xbt_free(smpi_mpi_global->mpi_byte); - xbt_free(smpi_mpi_global->mpi_int); - xbt_free(smpi_mpi_global->mpi_double); - - xbt_free(smpi_mpi_global->mpi_land); - xbt_free(smpi_mpi_global->mpi_sum); - - xbt_free(smpi_mpi_global); - } } int smpi_mpi_barrier(smpi_mpi_communicator_t comm) diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 8e1057b6e4..6c83e20bf8 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -152,9 +152,6 @@ void smpi_global_init() smpi_global->hosts = NULL; smpi_global->host_count = 0; - // running hosts - smpi_global->running_hosts_count = 0; - // mallocators smpi_global->request_mallocator = xbt_mallocator_new(SMPI_REQUEST_MALLOCATOR_SIZE, smpi_request_new, @@ -256,8 +253,22 @@ void smpi_global_destroy() xbt_free(smpi_global->received_message_queues); xbt_free(smpi_global); - smpi_global = NULL; + + /* free smpi_mpi_global */ + SIMIX_mutex_destroy(smpi_mpi_global->mpi_comm_world->barrier_mutex); + SIMIX_cond_destroy(smpi_mpi_global->mpi_comm_world->barrier_cond); + xbt_free(smpi_mpi_global->mpi_comm_world); + + xbt_free(smpi_mpi_global->mpi_byte); + xbt_free(smpi_mpi_global->mpi_int); + xbt_free(smpi_mpi_global->mpi_double); + + xbt_free(smpi_mpi_global->mpi_land); + xbt_free(smpi_mpi_global->mpi_sum); + + xbt_free(smpi_mpi_global); + } int smpi_host_index()