56 #pragma GCC diagnostic push 57 #pragma GCC diagnostic ignored "-Wreserved-id-macro" 61 #pragma GCC diagnostic pop 94 #if (defined __GNUC__ && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))\ 95 || (defined __clang__) 96 #pragma GCC diagnostic push 97 #pragma GCC diagnostic ignored "-Wmissing-prototypes" 102 comm_c = MPI_Comm_f2c(*comm_f);
108 return MPI_Comm_c2f(Xt_default_comm);
115 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
116 Xt_abort(comm_c, msg, source, line);
153 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
155 if (size > XT_MPI_FINT_MAX)
156 Xt_abort(comm_c,
"pack size too large", __FILE__, __LINE__);
164 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
170 PVOID, PVOID, INT, PINT, INT)
173 xt_idxlist_unpack_f2c(
struct xt_idxlist_f *idxlist,
void *buffer,
177 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
182 PVOID, PVOID, INT, PINT, INT)
187 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
194 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
203 MPI_Comm inter_comm_c = MPI_Comm_f2c(inter_comm_f),
204 intra_comm_c = MPI_Comm_f2c(intra_comm_f);
207 inter_comm_c, intra_comm_c);
211 int *src_block_offsets,
212 int *src_block_sizes,
214 int *dst_block_offsets,
215 int *dst_block_sizes,
218 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
221 src_block_offsets, src_block_sizes,
223 dst_block_offsets, dst_block_sizes,
229 int *src_block_sizes,
int src_block_num,
230 int *dst_block_sizes,
int dst_block_num,
232 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
235 src_block_sizes, src_block_num,
236 dst_block_sizes, dst_block_num,
244 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
245 assert(
sizeof (
MPI_Fint) ==
sizeof (
int));
253 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
260 MPI_Aint *src_displacements,
261 MPI_Aint *dst_displacements,
264 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) 265 #pragma GCC diagnostic push 266 #pragma GCC diagnostic ignored "-Wtype-limits" 268 assert((
long long)num_redists <= (
long long)INT_MAX);
269 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) 270 #pragma GCC diagnostic pop 272 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
274 Xt_abort(comm_c,
"bad case: (num_redists < 1)", __FILE__, __LINE__);
286 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) 287 #pragma GCC diagnostic push 288 #pragma GCC diagnostic ignored "-Wtype-limits" 290 assert((
long long)num_redists <= (
long long)INT_MAX
291 && (
long long)cache_size <= (
long long)INT_MAX);
292 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) 293 #pragma GCC diagnostic pop 295 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
297 Xt_abort(comm_c,
"bad case: (num_redists < 1)", __FILE__, __LINE__);
299 (
int)cache_size, comm_c);
314 return MPI_Comm_c2f(comm);
324 num_dst_ext, dst_extents,
325 MPI_Type_f2c(datatype_f));
330 int num_src_intersections,
331 const struct Xt_com_list src_com[num_src_intersections],
332 int num_dst_intersections,
333 const struct Xt_com_list dst_com[num_dst_intersections],
334 void *src_idxlist,
void *dst_idxlist,
MPI_Fint comm)
337 num_dst_intersections, dst_com,
338 src_idxlist, dst_idxlist, MPI_Comm_f2c(comm));
343 int num_src_intersections,
const void *src_com,
344 int num_dst_intersections,
const void *dst_com,
345 void *src_idxlist,
void *dst_idxlist,
MPI_Fint comm)
348 num_src_intersections, src_com, num_dst_intersections, dst_com,
349 src_idxlist, dst_idxlist, MPI_Comm_f2c(comm));
356 return (p_com_a + 1 == p_com_b);
363 #if (defined __GNUC__ && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))\ 364 || (defined __clang__) 365 #pragma GCC diagnostic pop void * xt_xmap_intersection_new_f2c(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], void *src_idxlist, void *dst_idxlist, MPI_Fint comm)
Xt_idxlist xt_idxlist_unpack(void *buffer, int buffer_size, int *position, MPI_Comm comm)
Xt_xmap xt_xmap_f2c(struct xt_xmap_f *p)
Xt_redist xt_redist_p2p_blocks_off_new_f(struct xt_xmap_f *xmap_f, int *src_block_offsets, int *src_block_sizes, int src_block_num, int *dst_block_offsets, int *dst_block_sizes, int dst_block_num, MPI_Fint datatype_f)
void xt_sort_index_f2c(Xt_int *a, int n, int *idx, int reset_index)
void xt_sort_int_f2c(int *a, size_t n)
void xt_initialize_f(MPI_Fint *comm_f)
external, public xt_idxlist_unpack_f
Xt_redist xt_redist_collection_static_new(Xt_redist *redists, int num_redists, const MPI_Aint src_displacements[num_redists], const MPI_Aint dst_displacements[num_redists], MPI_Comm comm)
Xt_xmap xt_xmap_dist_dir_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
void xt_initialize(MPI_Comm default_comm)
void xt_mpi_comm_mark_exclusive(MPI_Comm comm)
void(* xt_sort_idxpos)(idxpos_type *v, size_t n)
Xt_redist xt_redist_p2p_off_new_f(struct xt_xmap_f *xmap_f, MPI_Fint *src_offsets, MPI_Fint *dst_offsets, MPI_Fint datatype_f)
external, public xt_idxlist_pack_f
Xt_xmap xt_xmap_all2all_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
external, public xt_slice_c_loc
Xt_redist xt_redist_collection_static_new_f(Xt_redist *redists, MPI_Fint num_redists, MPI_Aint *src_displacements, MPI_Aint *dst_displacements, MPI_Fint comm_f)
FCALLSCSUB5(xt_idxlist_pack_f2c, XT_IDXLIST_PACK_F, xt_idxlist_pack_f, PVOID, PVOID, INT, PINT, INT)
void(* xt_sort_index)(Xt_int *a, int n, int *idx, int reset_index)
Xt_xmap xt_xmap_intersection_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_redist xt_redist_p2p_ext_new(Xt_xmap xmap, int num_src_ext, const struct Xt_offset_ext src_extents[], int num_dst_ext, const struct Xt_offset_ext dst_extents[], MPI_Datatype datatype)
Xt_xmap xt_xmap_dist_dir_intercomm_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm)
MPI_Fint xt_redist_get_mpi_comm_c2f(Xt_redist *redist)
exchange map declarations
Xt_redist xt_redist_p2p_off_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype)
void * xt_redist_p2p_ext_new_c2f(Xt_xmap *xmap, int num_src_ext, struct Xt_offset_ext src_extents[], int num_dst_ext, struct Xt_offset_ext dst_extents[], MPI_Fint datatype_f)
Xt_redist xt_redist_collection_new_f(Xt_redist *redists, MPI_Fint num_redists, MPI_Fint cache_size, MPI_Fint comm_f)
Xt_xmap xt_xmap_dist_dir_intercomm_new_f(struct xt_idxlist_f *src_idxlist_f, struct xt_idxlist_f *dst_idxlist_f, MPI_Fint inter_comm_f, MPI_Fint intra_comm_f)
MPI_Fint xt_get_default_comm_f(void)
MPI_Fint xt_idxlist_get_pack_size_f2c(struct xt_idxlist_f *idxlist, MPI_Fint comm_f)
int xt_com_list_contiguous(const struct Xt_com_list *p_com_a, const struct Xt_com_list *p_com_b)
Xt_xmap xt_xmap_intersection_ext_new(int num_src_intersections, const struct Xt_com_list src_com[num_src_intersections], int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
void * xt_xmap_intersection_ext_new_f2c(int num_src_intersections, const void *src_com, int num_dst_intersections, const void *dst_com, void *src_idxlist, void *dst_idxlist, MPI_Fint comm)
Xt_redist xt_redist_p2p_blocks_off_new(Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_new_f(struct xt_xmap_f *xmap_f, MPI_Fint datatype_f)
void xt_abort_f(MPI_Fint comm_f, const char *msg, const char *source, int line) __attribute__((noreturn))
static void xt_slice_c_loc_f2c(void *a, void *p)
Xt_redist xt_redist_f2c(struct xt_redist_f *p)
size_t xt_idxlist_get_pack_size(Xt_idxlist idxlist, MPI_Comm comm)
static void xt_idxlist_pack_f2c(struct xt_idxlist_f *idxlist, void *buffer, MPI_Fint buffer_size, MPI_Fint *position, MPI_Fint comm_f)
Xt_redist xt_redist_p2p_new(Xt_xmap xmap, MPI_Datatype datatype)
Xt_xmap xt_xmap_dist_dir_new_f(struct xt_idxlist_f *src_idxlist_f, struct xt_idxlist_f *dst_idxlist_f, MPI_Fint comm_f)
Xt_redist xt_redist_p2p_blocks_new(Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
MPI_Comm xt_redist_get_MPI_Comm(Xt_redist redist)
Xt_idxlist xt_idxlist_f2c(struct xt_idxlist_f *p)
void xt_sort_idxpos_f2c(idxpos_type *a, size_t n)
void xt_idxlist_pack(Xt_idxlist idxlist, void *buffer, int buffer_size, int *position, MPI_Comm comm)
void(* xt_sort_int)(int *a, size_t n)
Xt_redist xt_redist_p2p_blocks_new_f(struct xt_xmap_f *xmap_f, int *src_block_sizes, int src_block_num, int *dst_block_sizes, int dst_block_num, MPI_Fint datatype_f)
void xt_mpi_comm_mark_exclusive_f2c(MPI_Fint *comm)
Xt_redist xt_redist_collection_new(Xt_redist *redists, int num_redists, int cache_size, MPI_Comm comm)