64 MPI_Request *recv_request
65 =
xmalloc((
size_t)nrecv *
sizeof (*recv_request));
67 for (
int i = 0; i < nrecv; ++i)
68 xt_mpi_call(MPI_Irecv(dst_data, 1, recv_msgs[i].datatype,
71 recv_request+i), comm);
73 for (
int i = 0; i < nsend; ++i)
74 xt_mpi_call(MPI_Send(CAST_MPI_SEND_BUF(src_data), 1, send_msgs[i].datatype,
79 xt_mpi_call(MPI_Waitall(nrecv, recv_request, MPI_STATUSES_IGNORE), comm);
add versions of standard API functions not returning on error
static void xt_exchanger_irecv_send_s_exchange(const void *src_data, void *dst_data, int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, int tag_offset, MPI_Comm comm)
Xt_exchanger xt_exchanger_irecv_send_new(int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset)
Xt_exchanger xt_exchanger_simple_base_new(int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset, xt_simple_s_exchange_func s_func, xt_simple_a_exchange_func a_func)
#define xt_mpi_call(call, comm)
@ xt_mpi_tag_exchange_msg
redistribution of data, non-public declarations