64 MPI_Request *recv_request
65 =
xmalloc((
size_t)nrecv *
sizeof (*recv_request));
67 for (
int i = 0; i < nrecv; ++i)
71 recv_request+i), comm);
73 for (
int i = 0; i < nsend; ++i)
74 xt_mpi_call(MPI_Send((
void *)src_data, 1, send_msgs[i].datatype,
79 xt_mpi_call(MPI_Waitall(nrecv, recv_request, MPI_STATUSES_IGNORE), comm);
redistribution of data, non-public declarations
Xt_exchanger xt_exchanger_simple_base_new(int nsend, int nrecv, struct Xt_redist_msg *send_msgs, struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset, xt_simple_exchange_func func)
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, struct Xt_redist_msg *send_msgs, struct Xt_redist_msg *recv_msgs, int tag_offset, MPI_Comm comm)
Xt_exchanger xt_exchanger_irecv_send_new(int nsend, int nrecv, struct Xt_redist_msg *send_msgs, struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset)
#define xt_mpi_call(call, comm)