diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index a7eb6dfe80..87e75c1c05 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -879,6 +879,7 @@ void CommTiled::borders() // swap atoms with other procs using pack_border(), unpack_border() // use Waitall() instead of Waitany() because calls to unpack_border() // must increment per-atom arrays in ascending order + // For the same reason, sendself unpacks must occur after recvother unpacks if (ghost_velocity) { if (recvother[iswap]) { @@ -894,13 +895,6 @@ void CommTiled::borders() MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); } } - if (sendself[iswap]) { - avec->pack_border_vel(sendnum[iswap][nsend],sendlist[iswap][nsend], - buf_send,pbc_flag[iswap][nsend], - pbc[iswap][nsend]); - avec->unpack_border_vel(recvnum[iswap][nrecv],firstrecv[iswap][nrecv], - buf_send); - } if (recvother[iswap]) { MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); for (m = 0; m < nrecv; m++) @@ -908,6 +902,13 @@ void CommTiled::borders() &buf_recv[size_border* forward_recv_offset[iswap][m]]); } + if (sendself[iswap]) { + avec->pack_border_vel(sendnum[iswap][nsend],sendlist[iswap][nsend], + buf_send,pbc_flag[iswap][nsend], + pbc[iswap][nsend]); + avec->unpack_border_vel(recvnum[iswap][nrecv],firstrecv[iswap][nrecv], + buf_send); + } } else { if (recvother[iswap]) { @@ -923,12 +924,6 @@ void CommTiled::borders() MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); } } - if (sendself[iswap]) { - avec->pack_border(sendnum[iswap][nsend],sendlist[iswap][nsend], - buf_send,pbc_flag[iswap][nsend],pbc[iswap][nsend]); - avec->unpack_border(recvnum[iswap][nsend],firstrecv[iswap][nsend], - buf_send); - } if (recvother[iswap]) { MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); for (m = 0; m < nrecv; m++) @@ -936,6 +931,12 @@ void CommTiled::borders() &buf_recv[size_border* forward_recv_offset[iswap][m]]); } + if (sendself[iswap]) { + avec->pack_border(sendnum[iswap][nsend],sendlist[iswap][nsend], + buf_send,pbc_flag[iswap][nsend],pbc[iswap][nsend]); + avec->unpack_border(recvnum[iswap][nrecv],firstrecv[iswap][nrecv], + buf_send); + } } // increment ghost atoms