Merge pull request #1426 from Adrian-Diaz/comm_tiled_sendself_fix

Add bugfix for comm_tiled_sendself
This commit is contained in:
Axel Kohlmeyer
2020-07-29 20:35:33 -04:00
committed by GitHub

View File

@ -879,6 +879,7 @@ void CommTiled::borders()
// swap atoms with other procs using pack_border(), unpack_border() // swap atoms with other procs using pack_border(), unpack_border()
// use Waitall() instead of Waitany() because calls to unpack_border() // use Waitall() instead of Waitany() because calls to unpack_border()
// must increment per-atom arrays in ascending order // must increment per-atom arrays in ascending order
// For the same reason, sendself unpacks must occur after recvother unpacks
if (ghost_velocity) { if (ghost_velocity) {
if (recvother[iswap]) { if (recvother[iswap]) {
@ -894,13 +895,6 @@ void CommTiled::borders()
MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); 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]) { if (recvother[iswap]) {
MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE);
for (m = 0; m < nrecv; m++) for (m = 0; m < nrecv; m++)
@ -908,6 +902,13 @@ void CommTiled::borders()
&buf_recv[size_border* &buf_recv[size_border*
forward_recv_offset[iswap][m]]); 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 { } else {
if (recvother[iswap]) { if (recvother[iswap]) {
@ -923,12 +924,6 @@ void CommTiled::borders()
MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); 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]) { if (recvother[iswap]) {
MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE);
for (m = 0; m < nrecv; m++) for (m = 0; m < nrecv; m++)
@ -936,6 +931,12 @@ void CommTiled::borders()
&buf_recv[size_border* &buf_recv[size_border*
forward_recv_offset[iswap][m]]); 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 // increment ghost atoms