From 672f7ba27d7121c4f935621e93478f6cbca1bab1 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 4 Dec 2024 16:44:41 -0700 Subject: [PATCH 1/2] Overlap more communication and computation. --- src/parallelComm.C | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/parallelComm.C b/src/parallelComm.C index aa58c02..e2545aa 100644 --- a/src/parallelComm.C +++ b/src/parallelComm.C @@ -94,24 +94,27 @@ void parallelComm::sendRecvPacketsAll(PACKET* sndPack, PACKET* rcvPack) const all_rcv_realData, rreal, rcv_real_displs.data(), MPI_DOUBLE, scomm, &real_request); - MPI_Wait(&int_request, MPI_STATUS_IGNORE); for (i = 0; i < numprocs; i++) { - if (rcvPack[i].nints > 0) { - rcvPack[i].intData = (int*)malloc(sizeof(int) * rcvPack[i].nints); - } if (rcvPack[i].nreals > 0) { rcvPack[i].realData = (REAL*)malloc(sizeof(REAL) * rcvPack[i].nreals); } } + for (i = 0; i < numprocs; i++) { + if (rcvPack[i].nints > 0) { + rcvPack[i].intData = (int*)malloc(sizeof(int) * rcvPack[i].nints); + } + } - MPI_Wait(&real_request, MPI_STATUS_IGNORE); + MPI_Wait(&int_request, MPI_STATUS_IGNORE); for (int i = 0; i < numprocs; i++) { int const displ = rcv_int_displs[i]; for (int j = 0; j < rint[i]; j++) { rcvPack[i].intData[j] = all_rcv_intData[displ + j]; } } + + MPI_Wait(&real_request, MPI_STATUS_IGNORE); for (int i = 0; i < numprocs; i++) { int const displ = rcv_real_displs[i]; for (int j = 0; j < rreal[i]; j++) { From d43bc97ccd5bd759b65cb1341ba036a8743bac77 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 4 Dec 2024 16:48:59 -0700 Subject: [PATCH 2/2] Ordering consistency. --- src/parallelComm.C | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/parallelComm.C b/src/parallelComm.C index e2545aa..38d300d 100644 --- a/src/parallelComm.C +++ b/src/parallelComm.C @@ -95,14 +95,14 @@ void parallelComm::sendRecvPacketsAll(PACKET* sndPack, PACKET* rcvPack) const &real_request); for (i = 0; i < numprocs; i++) { - if (rcvPack[i].nreals > 0) { - rcvPack[i].realData = - (REAL*)malloc(sizeof(REAL) * rcvPack[i].nreals); + if (rcvPack[i].nints > 0) { + rcvPack[i].intData = (int*)malloc(sizeof(int) * rcvPack[i].nints); } } for (i = 0; i < numprocs; i++) { - if (rcvPack[i].nints > 0) { - rcvPack[i].intData = (int*)malloc(sizeof(int) * rcvPack[i].nints); + if (rcvPack[i].nreals > 0) { + rcvPack[i].realData = + (REAL*)malloc(sizeof(REAL) * rcvPack[i].nreals); } }