73 const void **src_data,
void **dst_data);
122 Xt_redist_sab redist =
xmalloc(
sizeof (*redist));
127 recv_msgs, redist->
comm,
138 static inline Xt_redist_sab
141 return (Xt_redist_sab)redist;
147 Xt_redist_sab redist_sab =
xrsab(redist);
148 Xt_redist_sab redist_sab_new =
xmalloc(
sizeof *redist_sab_new);
163 Xt_redist_sab redist_sab =
xrsab(redist);
175 const void **src_data,
void **dst_data)
177 Xt_redist_sab redist_rep =
xrsab(redist);
181 Xt_abort(redist_rep->
comm,
"ERROR: multi-array s_exchange is not" 182 " implemented for this xt_redist type " 183 "(Xt_redist_single_array_base)", __FILE__, __LINE__);
189 Xt_redist_sab redist_sab =
xrsab(redist);
218 Xt_redist_sab redist_sab =
xrsab(redist);
220 return redist_sab->
comm;
void xt_exchanger_s_exchange(Xt_exchanger exchanger, const void *src_data, void *dst_data)
static MPI_Datatype redist_sab_get_recv_MPI_Datatype(Xt_redist redist, int rank)
static void redist_sab_s_exchange1(Xt_redist redist, const void *src_data, void *dst_data)
static void redist_sab_s_exchange(Xt_redist redist, int num_arrays, const void **src_data, void **dst_data)
static MPI_Comm redist_sab_get_MPI_Comm(Xt_redist redist)
redistribution of data, non-public declarations
Xt_redist(* copy)(Xt_redist)
add versions of standard API functions not returning on error
static Xt_redist_sab xrsab(void *redist)
static int redist_collection_get_msg_ranks(Xt_redist redist, enum xt_msg_direction direction, int **ranks)
int xt_exchanger_get_msg_ranks(Xt_exchanger exchanger, enum xt_msg_direction direction, int **ranks)
struct Xt_redist_sab_ * Xt_redist_sab
exchange map declarations
Xt_exchanger xt_exchanger_copy(Xt_exchanger exchanger, MPI_Comm new_comm, int new_tag_offset)
static void xt_redist_msgs_free(size_t n, struct Xt_redist_msg *msgs, MPI_Comm comm)
Xt_exchanger(* xt_exchanger_default_constructor)(int nsend, int nrecv, struct Xt_redist_msg *send_msgs, struct Xt_redist_msg *recv_msgs, MPI_Comm comm, int tag_offset)
void xt_exchanger_delete(Xt_exchanger exchanger)
Xt_redist xt_redist_single_array_base_new(int nsend, int nrecv, struct Xt_redist_msg *send_msgs, struct Xt_redist_msg *recv_msgs, MPI_Comm comm)
static void redist_sab_delete(Xt_redist redist)
static Xt_redist redist_sab_copy(Xt_redist redist)
static MPI_Datatype redist_sab_get_send_MPI_Datatype(Xt_redist redist, int rank)
const struct xt_redist_vtable * vtable
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)
exchanging of data based on information provided by redist's
MPI_Datatype xt_exchanger_get_MPI_Datatype(Xt_exchanger exchanger, int rank, enum xt_msg_direction direction)
static const struct xt_redist_vtable redist_sab_vtable