From 75556c3d1492aad51984b9fea657dcde33e44705 Mon Sep 17 00:00:00 2001 From: degomme Date: Mon, 31 Oct 2016 09:31:20 +0100 Subject: [PATCH 1/1] handle MPI_IN_PLACE for this collective --- src/smpi/colls/reduce-scatter-gather.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/smpi/colls/reduce-scatter-gather.c b/src/smpi/colls/reduce-scatter-gather.c index 98f2a097fa..38db76025b 100644 --- a/src/smpi/colls/reduce-scatter-gather.c +++ b/src/smpi/colls/reduce-scatter-gather.c @@ -54,7 +54,7 @@ int smpi_coll_tuned_reduce_scatter_gather(void *sendbuf, void *recvbuf, send_ptr = (void *) smpi_get_tmp_sendbuffer(new_count * extent); recv_ptr = (void *) smpi_get_tmp_recvbuffer(new_count * extent); tmp_buf = (void *) smpi_get_tmp_sendbuffer(new_count * extent); - memcpy(send_ptr, sendbuf, extent * count); + memcpy(send_ptr, sendbuf != MPI_IN_PLACE ? sendbuf : recvbuf, extent * count); //if ((rank != root)) smpi_mpi_sendrecv(send_ptr, new_count, datatype, rank, tag, @@ -233,7 +233,7 @@ int smpi_coll_tuned_reduce_scatter_gather(void *sendbuf, void *recvbuf, tmp_buf = (void *) smpi_get_tmp_sendbuffer(count * extent); //if ((rank != root)) - smpi_mpi_sendrecv(sendbuf, count, datatype, rank, tag, + smpi_mpi_sendrecv(sendbuf != MPI_IN_PLACE ? sendbuf : recvbuf, count, datatype, rank, tag, recvbuf, count, datatype, rank, tag, comm, &status); rem = comm_size - pof2; -- 2.39.2