static void exchange_rvecs(const gmx_multisim_t gmx_unused *ms, int gmx_unused b, rvec *v, int n) { rvec *buf; int i; if (v) { snew(buf, n); #ifdef GMX_MPI /* MPI_Sendrecv(v[0], n*sizeof(rvec),MPI_BYTE,MSRANK(ms,b),0, buf[0],n*sizeof(rvec),MPI_BYTE,MSRANK(ms,b),0, ms->mpi_comm_masters,MPI_STATUS_IGNORE); */ { MPI_Request mpi_req; MPI_Isend(v[0], n*sizeof(rvec), MPI_BYTE, MSRANK(ms, b), 0, ms->mpi_comm_masters, &mpi_req); MPI_Recv(buf[0], n*sizeof(rvec), MPI_BYTE, MSRANK(ms, b), 0, ms->mpi_comm_masters, MPI_STATUS_IGNORE); MPI_Wait(&mpi_req, MPI_STATUS_IGNORE); } #endif for (i = 0; i < n; i++) { copy_rvec(buf[i], v[i]); } sfree(buf); } }
static void exchange_doubles(const gmx_multisim_t *ms, int b, double *v, int n) { double *buf; int i; if (v) { snew(buf, n); #ifdef GMX_MPI /* MPI_Sendrecv(v, n*sizeof(double),MPI_BYTE,MSRANK(ms,b),0, buf,n*sizeof(double),MPI_BYTE,MSRANK(ms,b),0, ms->mpi_comm_masters,MPI_STATUS_IGNORE); */ { MPI_Request mpi_req; MPI_Isend(v, n*sizeof(double), MPI_BYTE, MSRANK(ms, b), 0, ms->mpi_comm_masters, &mpi_req); MPI_Recv(buf, n*sizeof(double), MPI_BYTE, MSRANK(ms, b), 0, ms->mpi_comm_masters, MPI_STATUS_IGNORE); MPI_Wait(&mpi_req, MPI_STATUS_IGNORE); } #endif for (i = 0; i < n; i++) { v[i] = buf[i]; } sfree(buf); } }