Fix a small problem with the handling of requests in MPI_Alltoall.
Этот коммит содержится в:
родитель
3f757bc8cb
Коммит
44d590b8fd
@ -603,7 +603,6 @@ int ompi_coll_base_alltoall_intra_basic_linear(void *sbuf, int scount,
|
|||||||
/* Initiate all send/recv to/from others. */
|
/* Initiate all send/recv to/from others. */
|
||||||
|
|
||||||
req = rreq = coll_base_comm_get_reqs(data, (size - 1) * 2);
|
req = rreq = coll_base_comm_get_reqs(data, (size - 1) * 2);
|
||||||
sreq = rreq + size - 1;
|
|
||||||
|
|
||||||
prcv = (char *) rbuf;
|
prcv = (char *) rbuf;
|
||||||
psnd = (char *) sbuf;
|
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;
|
for (nreqs = 0, i = (rank + 1) % size; i != rank;
|
||||||
i = (i + 1) % size, ++rreq, ++nreqs) {
|
i = (i + 1) % size, ++rreq, ++nreqs) {
|
||||||
err =
|
err = MCA_PML_CALL(irecv_init
|
||||||
MCA_PML_CALL(irecv_init
|
(prcv + (ptrdiff_t)i * rcvinc, rcount, rdtype, i,
|
||||||
(prcv + (ptrdiff_t)i * rcvinc, rcount, rdtype, i,
|
MCA_COLL_BASE_TAG_ALLTOALL, comm, rreq));
|
||||||
MCA_COLL_BASE_TAG_ALLTOALL, comm, rreq));
|
|
||||||
if (MPI_SUCCESS != err) {
|
if (MPI_SUCCESS != err) {
|
||||||
ompi_coll_base_free_reqs(req, nreqs);
|
ompi_coll_base_free_reqs(req, nreqs);
|
||||||
return err;
|
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
|
- We would like to minimize the search time through message queue
|
||||||
when messages actually arrive in the order in which they were posted.
|
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) {
|
i = (i + size - 1) % size, ++sreq, ++nreqs) {
|
||||||
err =
|
err = MCA_PML_CALL(isend_init
|
||||||
MCA_PML_CALL(isend_init
|
(psnd + (ptrdiff_t)i * sndinc, scount, sdtype, i,
|
||||||
(psnd + (ptrdiff_t)i * sndinc, scount, sdtype, i,
|
MCA_COLL_BASE_TAG_ALLTOALL,
|
||||||
MCA_COLL_BASE_TAG_ALLTOALL,
|
MCA_PML_BASE_SEND_STANDARD, comm, sreq));
|
||||||
MCA_PML_BASE_SEND_STANDARD, comm, sreq));
|
|
||||||
if (MPI_SUCCESS != err) {
|
if (MPI_SUCCESS != err) {
|
||||||
ompi_coll_base_free_reqs(req, nreqs);
|
ompi_coll_base_free_reqs(req, nreqs);
|
||||||
return err;
|
return err;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user