From 44d590b8fdfcb8192308a0aae534a7a98d05c2af Mon Sep 17 00:00:00 2001 From: George Bosilca Date: Mon, 16 Feb 2015 01:13:44 -0500 Subject: [PATCH] Fix a small problem with the handling of requests in MPI_Alltoall. --- ompi/mca/coll/base/coll_base_alltoall.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/ompi/mca/coll/base/coll_base_alltoall.c b/ompi/mca/coll/base/coll_base_alltoall.c index 6693971b1c..baed3f3a1b 100644 --- a/ompi/mca/coll/base/coll_base_alltoall.c +++ b/ompi/mca/coll/base/coll_base_alltoall.c @@ -603,7 +603,6 @@ int ompi_coll_base_alltoall_intra_basic_linear(void *sbuf, int scount, /* Initiate all send/recv to/from others. */ req = rreq = coll_base_comm_get_reqs(data, (size - 1) * 2); - sreq = rreq + size - 1; prcv = (char *) rbuf; psnd = (char *) sbuf; @@ -612,10 +611,9 @@ int ompi_coll_base_alltoall_intra_basic_linear(void *sbuf, int scount, for (nreqs = 0, i = (rank + 1) % size; i != rank; i = (i + 1) % size, ++rreq, ++nreqs) { - err = - MCA_PML_CALL(irecv_init - (prcv + (ptrdiff_t)i * rcvinc, rcount, rdtype, i, - MCA_COLL_BASE_TAG_ALLTOALL, comm, rreq)); + err = MCA_PML_CALL(irecv_init + (prcv + (ptrdiff_t)i * rcvinc, rcount, rdtype, i, + MCA_COLL_BASE_TAG_ALLTOALL, comm, rreq)); if (MPI_SUCCESS != err) { ompi_coll_base_free_reqs(req, nreqs); return err; @@ -626,13 +624,13 @@ int ompi_coll_base_alltoall_intra_basic_linear(void *sbuf, int scount, - We would like to minimize the search time through message queue when messages actually arrive in the order in which they were posted. */ - for (nreqs = 0, i = (rank + size - 1) % size; i != rank; + sreq = rreq; + for (i = (rank + size - 1) % size; i != rank; i = (i + size - 1) % size, ++sreq, ++nreqs) { - err = - MCA_PML_CALL(isend_init - (psnd + (ptrdiff_t)i * sndinc, scount, sdtype, i, - MCA_COLL_BASE_TAG_ALLTOALL, - MCA_PML_BASE_SEND_STANDARD, comm, sreq)); + err = MCA_PML_CALL(isend_init + (psnd + (ptrdiff_t)i * sndinc, scount, sdtype, i, + MCA_COLL_BASE_TAG_ALLTOALL, + MCA_PML_BASE_SEND_STANDARD, comm, sreq)); if (MPI_SUCCESS != err) { ompi_coll_base_free_reqs(req, nreqs); return err;