Merge pull request #1426 from Adrian-Diaz/comm_tiled_sendself_fix
Add bugfix for comm_tiled_sendself
This commit is contained in:
@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user