From f93641864e79a9efd548f4dd3b1afeedecdec8e9 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Tue, 4 Feb 2014 17:01:06 +0100 Subject: [PATCH] allow replay to handle -1 as a value for the size of a receive. The real size will be determined by probing the first incoming message from the sender. This is used to keep compatibility with tools that don't store the size on receiver's size --- src/smpi/smpi_replay.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/smpi/smpi_replay.c b/src/smpi/smpi_replay.c index 816ad8c516..71db9bfb31 100644 --- a/src/smpi/smpi_replay.c +++ b/src/smpi/smpi_replay.c @@ -259,6 +259,12 @@ static void action_recv(const char *const *action) { TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra); #endif + //unknow size from the receiver pov + if(size==-1){ + smpi_mpi_probe(from, 0, MPI_COMM_WORLD, &status); + size=status.count; + } + smpi_mpi_recv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD, &status); #ifdef HAVE_TRACING @@ -290,6 +296,12 @@ static void action_Irecv(const char *const *action) extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE); TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra); #endif + MPI_Status status; + //unknow size from the receiver pov + if(size==-1){ + smpi_mpi_probe(from, 0, MPI_COMM_WORLD, &status); + size=status.count; + } request = smpi_mpi_irecv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD); -- 2.20.1