1
1

Handle MPI_IN_PLACE correctly in the ompi_coll_tuned_reduce_scatter_intra_ring function.

We were not adjusting the sendbuf in this case so we were reducing garbage.

This fixes ticket #1506.

This commit was SVN r19673.
Этот коммит содержится в:
Rolf vandeVaart 2008-10-02 20:01:27 +00:00
родитель 852c0e35b8
Коммит 0a0ddfc934

Просмотреть файл

@ -9,6 +9,7 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -526,12 +527,14 @@ ompi_coll_tuned_reduce_scatter_intra_ring(void *sbuf, void *rbuf, int *rcounts,
inbuf[1] = inbuf_free[1] - lb; inbuf[1] = inbuf_free[1] - lb;
} }
/* Handle MPI_IN_PLACE */ /* Handle MPI_IN_PLACE for size > 1 */
if (MPI_IN_PLACE != sbuf) { if (MPI_IN_PLACE == sbuf) {
sbuf = rbuf;
}
ret = ompi_ddt_copy_content_same_ddt(dtype, total_count, ret = ompi_ddt_copy_content_same_ddt(dtype, total_count,
accumbuf, (char*)sbuf); accumbuf, (char*)sbuf);
if (ret < 0) { line = __LINE__; goto error_hndl; } if (ret < 0) { line = __LINE__; goto error_hndl; }
}
/* Computation loop */ /* Computation loop */