X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e1e50fa3f7c4b7b6bcb94dba4d4032f4d69260b9..51f94e1d38869bd7a057c58ff4978fdff170a6e6:/src/smpi/smpi_global.c diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 8c7edeac53..7cf9d544e4 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -35,6 +35,7 @@ static smpi_process_data_t *process_data = NULL; static int process_count = 0; MPI_Comm MPI_COMM_WORLD = MPI_COMM_NULL; +int MPI_UNIVERSE_SIZE; MPI_Errhandler* MPI_ERRORS_RETURN = NULL; MPI_Errhandler* MPI_ERRORS_ARE_FATAL = NULL; @@ -99,8 +100,8 @@ void smpi_process_finalize(void) */ int smpi_process_finalized() { + return (smpi_process_index()==-100); // If finalized, this value has been set to -100; - return process_data[smpi_process_index()]->index==-100; } @@ -170,8 +171,8 @@ int smpi_process_count(void) int smpi_process_index(void) { smpi_process_data_t data = smpi_process_data(); - - return data->index; + //return -1 if not initialized + return data? data->index : MPI_UNDEFINED; } smx_rdv_t smpi_process_mailbox(void) { @@ -267,6 +268,7 @@ void smpi_global_init(void) } group = smpi_group_new(process_count); MPI_COMM_WORLD = smpi_comm_new(group); + MPI_UNIVERSE_SIZE = smpi_comm_size(MPI_COMM_WORLD); for (i = 0; i < process_count; i++) { smpi_group_set_mapping(group, i, i); } @@ -278,11 +280,11 @@ void smpi_global_destroy(void) int i; smpi_bench_destroy(); - smpi_group_destroy(smpi_comm_group(MPI_COMM_WORLD)); + smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD)); smpi_comm_destroy(MPI_COMM_WORLD); MPI_COMM_WORLD = MPI_COMM_NULL; for (i = 0; i < count; i++) { - smpi_group_destroy(smpi_comm_group(process_data[i]->comm_self)); + smpi_group_unuse(smpi_comm_group(process_data[i]->comm_self)); smpi_comm_destroy(process_data[i]->comm_self); xbt_os_timer_free(process_data[i]->timer); simcall_rdv_destroy(process_data[i]->mailbox);