75 const void **src_data,
void **dst_data);
79 const void **src_data,
void **dst_data,
99 int *restrict *ranks);
142 int nsend,
int nrecv,
175 for (
size_t i = 0; i < 2; ++i)
176 redist_sab_new->
nmsg[i] = redist_sab->
nmsg[i];
199 const void **src_data,
void **dst_data)
205 Xt_abort(redist_rep->
comm,
"ERROR: multi-array s_exchange is not"
206 " implemented for this xt_redist type "
207 "(Xt_redist_single_array_base)", __FILE__, __LINE__);
212 const void **src_data,
void **dst_data,
219 Xt_abort(redist_rep->
comm,
"ERROR: multi-array a_exchange is not"
220 " implemented for this xt_redist type "
221 "(Xt_redist_single_array_base)", __FILE__, __LINE__);
258 int *restrict *ranks)
268 return redist_sab->
comm;
add versions of standard API functions not returning on error
Xt_exchanger_new exchanger_new
const struct xt_redist_vtable * vtable
Xt_redist(* copy)(Xt_redist)
struct Xt_config_ xt_default_config
implementation of configuration object
void xt_exchanger_s_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data)
int xt_exchanger_get_msg_ranks(Xt_exchanger exchanger, enum xt_msg_direction direction, int *restrict *ranks)
void xt_exchanger_a_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data, Xt_request *request)
void xt_exchanger_delete(Xt_exchanger exchanger)
Xt_exchanger xt_exchanger_copy(Xt_exchanger exchanger, MPI_Comm new_comm, int new_tag_offset)
MPI_Datatype xt_exchanger_get_MPI_Datatype(Xt_exchanger exchanger, int rank, enum xt_msg_direction direction)
exchanging of data based on information provided by redist's
MPI_Comm xt_mpi_comm_smart_dup(MPI_Comm comm, int *tag_offset)
void xt_mpi_comm_smart_dedup(MPI_Comm *comm, int tag_offset)
redistribution of data, non-public declarations
static int redist_sab_get_num_msg(Xt_redist redist, enum xt_msg_direction direction)
struct Xt_redist_sab_ * Xt_redist_sab
static Xt_redist redist_sab_copy(Xt_redist redist)
static MPI_Datatype redist_sab_get_MPI_Datatype(Xt_redist redist, int rank, enum xt_msg_direction direction)
Xt_redist xt_redist_single_array_base_new(int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, MPI_Comm comm)
static void redist_sab_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
static const struct xt_redist_vtable redist_sab_vtable
static Xt_redist_sab xrsab(void *redist)
static void redist_sab_delete(Xt_redist redist)
static MPI_Comm redist_sab_get_MPI_Comm(Xt_redist redist)
static void redist_sab_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)
static void redist_sab_a_exchange1(Xt_redist redist, const void *src_data, void *dst_data, Xt_request *request)
static void redist_sab_a_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data, Xt_request *request)
Xt_redist xt_redist_single_array_base_custom_new(int nsend, int nrecv, const struct Xt_redist_msg *send_msgs, const struct Xt_redist_msg *recv_msgs, MPI_Comm comm, Xt_config config)
static int redist_sab_get_msg_ranks(Xt_redist redist, enum xt_msg_direction direction, int *restrict *ranks)
exchange map declarations