Unverified Commit b00bfc82 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1426 from Adrian-Diaz/comm_tiled_sendself_fix

Add bugfix for comm_tiled_sendself 
parents 2923dcbb b402b008
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -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