From 8de50fce86c9a6048e2bde6c2d3158a461fe6081 Mon Sep 17 00:00:00 2001 From: degomme Date: Mon, 29 Sep 2014 00:58:26 +0200 Subject: [PATCH] intercept correctly calls with unitialized communicators --- src/smpi/smpi_comm.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/smpi/smpi_comm.c b/src/smpi/smpi_comm.c index 0c6df6135c..c6da369a53 100644 --- a/src/smpi/smpi_comm.c +++ b/src/smpi/smpi_comm.c @@ -128,35 +128,51 @@ void smpi_comm_get_name (MPI_Comm comm, char* name, int* len) } void smpi_comm_set_leaders_comm(MPI_Comm comm, MPI_Comm leaders){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); comm->leaders_comm=leaders; } void smpi_comm_set_intra_comm(MPI_Comm comm, MPI_Comm leaders){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); comm->intra_comm=leaders; } int* smpi_comm_get_non_uniform_map(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); return comm->non_uniform_map; } int* smpi_comm_get_leaders_map(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); return comm->leaders_map; } MPI_Comm smpi_comm_get_leaders_comm(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); return comm->leaders_comm; } MPI_Comm smpi_comm_get_intra_comm(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); if(comm==MPI_COMM_WORLD) return smpi_process_get_comm_intra(); else return comm->intra_comm; } int smpi_comm_is_uniform(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); return comm->is_uniform; } int smpi_comm_is_blocked(MPI_Comm comm){ + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); return comm->is_blocked; } @@ -277,6 +293,10 @@ compare_ints (const void *a, const void *b) void smpi_comm_init_smp(MPI_Comm comm){ int leader = -1; + + if (comm == MPI_COMM_UNINITIALIZED) + comm = smpi_process_comm_world(); + int comm_size =smpi_comm_size(comm); // If we are in replay - perform an ugly hack -- 2.20.1