69static const char filename[] =
"xt_redist_single_array_base.c";
79 const void *
const *src_data,
void *
const *dst_data);
83 const void *
const *src_data,
void *
const *dst_data,
104 int *restrict *ranks);
147 int nsend,
int nrecv,
161 = exchanger_new(nsend, nrecv, send_msgs, recv_msgs,
182 for (
size_t i = 0; i < 2; ++i)
183 redist_sab_new->
nmsg[i] = redist_sab->
nmsg[i];
206 const void *
const *src_data,
void *
const *dst_data)
212 Xt_abort(redist_rep->
comm,
"ERROR: multi-array s_exchange is not"
213 " implemented for this xt_redist type "
214 "(Xt_redist_single_array_base)",
filename, __LINE__);
219 const void *
const *src_data,
void *
const *dst_data,
226 Xt_abort(redist_rep->
comm,
"ERROR: multi-array a_exchange is not"
227 " implemented for this xt_redist type "
228 "(Xt_redist_single_array_base)",
filename, __LINE__);
266 int *restrict *ranks)
276 return redist_sab->
comm;
add versions of standard API functions not returning on error
const struct xt_redist_vtable * vtable
Xt_exchanger_new xt_config_get_exchange_new_by_comm(Xt_config config, MPI_Comm comm)
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, bool do_dup)
exchanging of data based on information provided by redist's
Xt_exchanger(* Xt_exchanger_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_config config)
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 void redist_sab_s_exchange(Xt_redist redist, int num_arrays, const void *const *src_data, void *const *dst_data)
static const char filename[]
static void redist_sab_a_exchange(Xt_redist redist, int num_arrays, const void *const *src_data, void *const *dst_data, Xt_request *request)
static Xt_redist redist_sab_copy(Xt_redist redist)
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 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 MPI_Datatype redist_sab_get_MPI_Datatype(Xt_redist redist, int rank, enum xt_msg_direction direction, bool do_dup)
static void redist_sab_a_exchange1(Xt_redist redist, 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