64#pragma GCC diagnostic push
65#pragma GCC diagnostic ignored "-Wreserved-id-macro"
66#pragma GCC diagnostic ignored "-Wstrict-prototypes"
70#pragma GCC diagnostic pop
123#if (defined __GNUC__ && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))\
124 || (defined __clang__)
125#pragma GCC diagnostic push
126#pragma GCC diagnostic ignored "-Wmissing-prototypes"
131 comm_c = MPI_Comm_f2c(*comm_f);
137 return MPI_Comm_c2f(Xt_default_comm);
145 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
146 Xt_abort(comm_c, msg, source, line);
213 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
215 if (size > XT_MPI_FINT_MAX)
216 Xt_abort(comm_c,
"pack size too large",
filename, __LINE__);
224 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
230 PVOID, PVOID, INT, PINT, INT)
233xt_idxlist_unpack_f2c(
struct xt_idxlist_f *idxlist,
void *buffer,
237 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
241FCALLSCSUB5(xt_idxlist_unpack_f2c, XT_IDXLIST_UNPACK_F, xt_idxlist_unpack_f,
242 PVOID, PVOID, INT, PINT, INT)
245xt_xmap_all2all_new_f(
struct xt_idxlist_f *src_idxlist_f,
248 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
257 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
259 comm_c, config_f->
cptr);
266 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
275 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
277 comm_c, config_f->
cptr);
285 MPI_Comm inter_comm_c = MPI_Comm_f2c(inter_comm_f),
286 intra_comm_c = MPI_Comm_f2c(intra_comm_f);
288 src_idxlist_f->
cptr, dst_idxlist_f->
cptr, inter_comm_c, intra_comm_c);
298 MPI_Comm inter_comm_c = MPI_Comm_f2c(inter_comm_f),
299 intra_comm_c = MPI_Comm_f2c(intra_comm_f);
301 src_idxlist_f->
cptr, dst_idxlist_f->
cptr, inter_comm_c, intra_comm_c,
308 int *src_block_offsets,
int *src_block_sizes,
int src_block_num,
309 int *dst_block_offsets,
int *dst_block_sizes,
int dst_block_num,
312 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
316 src_block_offsets, src_block_sizes, src_block_num,
317 dst_block_offsets, dst_block_sizes, dst_block_num, datatype_c);
323 int *src_block_offsets,
int *src_block_sizes,
int src_block_num,
324 int *dst_block_offsets,
int *dst_block_sizes,
int dst_block_num,
327 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
330 xmap_f->
cptr, src_block_offsets, src_block_sizes, src_block_num,
331 dst_block_offsets, dst_block_sizes, dst_block_num, datatype_c,
337 struct xt_xmap_f *xmap_f,
int *src_block_sizes,
int src_block_num,
338 int *dst_block_sizes,
int dst_block_num,
MPI_Fint datatype_f)
340 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
343 xmap_f->
cptr, src_block_sizes, src_block_num,
344 dst_block_sizes, dst_block_num, datatype_c);
349 int *src_block_sizes,
int src_block_num,
350 int *dst_block_sizes,
int dst_block_num,
354 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
357 xmap_f->
cptr, src_block_sizes, src_block_num,
358 dst_block_sizes, dst_block_num, datatype_c, config->
cptr);
368 num_dst_ext, dst_extents,
369 MPI_Type_f2c(datatype_f));
380 num_dst_ext, dst_extents,
381 MPI_Type_f2c(datatype_f), config->
cptr);
391 num_dst_ext, dst_extents,
392 MPI_Type_f2c(datatype_f));
403 num_dst_ext, dst_extents,
404 MPI_Type_f2c(datatype_f), config->
cptr);
411 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
412 assert(
sizeof (
MPI_Fint) ==
sizeof (
int));
423 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
424 assert(
sizeof (
MPI_Fint) ==
sizeof (
int));
427 datatype_c, config->
cptr);
432 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
440 MPI_Datatype datatype_c = MPI_Type_f2c(datatype_f);
447 MPI_Aint *src_displacements,
448 MPI_Aint *dst_displacements,
451#if XT_MPI_FINT_MAX != INT_MAX
452 assert((
long long)num_redists <= (
long long)INT_MAX);
454 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
456 Xt_abort(comm_c,
"bad case: (num_redists < 1)",
filename, __LINE__);
459 redists, (
int)num_redists, src_displacements, dst_displacements, comm_c);
465 MPI_Aint *src_displacements, MPI_Aint *dst_displacements,
468#if XT_MPI_FINT_MAX != INT_MAX
469 assert((
long long)num_redists <= (
long long)INT_MAX);
471 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
473 Xt_abort(comm_c,
"bad case: (num_redists < 1)",
filename, __LINE__);
476 redists, (
int)num_redists, src_displacements, dst_displacements,
477 comm_c, config->
cptr);
484#if XT_MPI_FINT_MAX != INT_MAX
485 assert((
long long)num_redists <= (
long long)INT_MAX
486 && (
long long)cache_size <= (
long long)INT_MAX);
488 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
490 Xt_abort(comm_c,
"bad case: (num_redists < 1)",
filename, __LINE__);
492 (
int)cache_size, comm_c);
500#if XT_MPI_FINT_MAX != INT_MAX
501 assert((
long long)num_redists <= (
long long)INT_MAX
502 && (
long long)cache_size <= (
long long)INT_MAX);
504 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
506 Xt_abort(comm_c,
"bad case: (num_redists < 1)",
filename, __LINE__);
508 (
int)cache_size, comm_c, config->
cptr);
523 return MPI_Comm_c2f(comm);
530 return MPI_Type_c2f(dt);
537 return MPI_Type_c2f(dt);
553 nsend, nrecv, send_msgs_f, recv_msgs_f, comm_f,
563 assert(nsend >= 0 && nrecv >= 0);
564 MPI_Comm comm_c = MPI_Comm_f2c(comm_f);
566 =
xmalloc(((
size_t)nsend + (
size_t)nrecv) *
sizeof(*send_msgs_c)),
567 *recv_msgs_c = send_msgs_c + nsend;
568 for (
int i = 0; i < nsend; ++i) {
569 send_msgs_c[i].
rank = send_msgs_f[i].
rank;
572 for (
int i = 0; i < nrecv; ++i) {
573 recv_msgs_c[i].rank = recv_msgs_f[i].
rank;
574 recv_msgs_c[i].datatype = MPI_Type_f2c(recv_msgs_f[i].
datatype);
577 nsend, nrecv, send_msgs_c, recv_msgs_c, comm_c, config->
cptr);
584 int num_src_intersections,
585 const struct Xt_com_list src_com[num_src_intersections],
586 int num_dst_intersections,
587 const struct Xt_com_list dst_com[num_dst_intersections],
588 void *src_idxlist,
void *dst_idxlist,
MPI_Fint comm)
591 num_dst_intersections, dst_com,
592 src_idxlist, dst_idxlist, MPI_Comm_f2c(comm));
597 int num_src_intersections,
const void *src_com,
598 int num_dst_intersections,
const void *dst_com,
599 void *src_idxlist,
void *dst_idxlist,
MPI_Fint comm)
602 num_src_intersections, src_com, num_dst_intersections, dst_com,
603 src_idxlist, dst_idxlist, MPI_Comm_f2c(comm));
608 int num_src_msg,
const void *src_com,
int num_dst_msg,
const void *dst_com,
612 num_src_msg, src_com, num_dst_msg, dst_com, MPI_Comm_f2c(comm));
615#ifndef HAVE_FC_IS_CONTIGUOUS
620 return (p_com_a + 1 == p_com_b);
627 return (p_msgs_a + 1 == p_msgs_b);
642 .intra_comm = MPI_Comm_c2f(comms->
intra_comm),
643 .inter_comm = MPI_Comm_c2f(comms->
inter_comm),
647 return bgd->
init_f(gen_state, src_idxlist, dst_idxlist, config,
648 &comms_f, init_params);
662 assert(gen_state_size >= 0);
666 (
size_t)gen_state_size, init_params);
667 (*gen)->init_f = init;
671#define ROUTINE_2 (Xt_xmdd_bucket_gen_init_state_f)(void (*)(void))
673#define ROUTINE_3 (Xt_xmdd_bucket_gen_destroy_state)(void (*)(void))
675#define ROUTINE_4 (Xt_xmdd_bucket_gen_get_intersect_max_num)(void (*)(void))
677#define ROUTINE_5 (Xt_xmdd_bucket_gen_next)(void (*)(void))
680 XT_XMDD_BUCKET_GEN_DEFINE_INTERFACE_F,
681 xt_xmdd_bucket_gen_define_interface_f,
682 PVOID, ROUTINE, ROUTINE, ROUTINE, ROUTINE, LONG, PVOID)
685xt_mpi_comm_mark_exclusive_f2c(
MPI_Fint *comm) {
688#if (defined __GNUC__ && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))\
689 || (defined __clang__)
690#pragma GCC diagnostic pop
add versions of standard API functions not returning on error
Xt_xmdd_bucket_gen_init_state_f init_f
struct Xt_config_ xt_default_config
struct Xt_config_ * Xt_config
implementation of configuration object
void xt_initialize(MPI_Comm default_comm)
Xt_idxlist xt_idxlist_unpack(void *buffer, int buffer_size, int *position, MPI_Comm comm)
void xt_idxlist_pack(Xt_idxlist idxlist, void *buffer, int buffer_size, int *position, MPI_Comm comm)
size_t xt_idxlist_get_pack_size(Xt_idxlist idxlist, MPI_Comm comm)
void xt_mpi_comm_mark_exclusive(MPI_Comm comm)
MPI_Datatype xt_redist_get_recv_MPI_Datatype(Xt_redist redist, int rank)
MPI_Comm xt_redist_get_MPI_Comm(Xt_redist redist)
MPI_Datatype xt_redist_get_send_MPI_Datatype(Xt_redist redist, int rank)
Xt_redist xt_redist_collection_new(Xt_redist *redists, int num_redists, int cache_size, MPI_Comm comm)
Xt_redist xt_redist_collection_custom_new(Xt_redist *redists, int num_redists, int cache_size, MPI_Comm comm, Xt_config config)
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_redist xt_redist_collection_static_custom_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_config config)
Xt_redist xt_redist_p2p_custom_new(Xt_xmap xmap, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_off_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_blocks_custom_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, Xt_config config)
Xt_redist xt_redist_p2p_new(Xt_xmap xmap, MPI_Datatype datatype)
Xt_redist xt_redist_p2p_off_custom_new(Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_blocks_off_custom_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_config config)
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_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_aext_new(Xt_xmap xmap, int num_src_ext, const struct Xt_aoffset_ext src_extents[], int num_dst_ext, const struct Xt_aoffset_ext dst_extents[], MPI_Datatype datatype)
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)
Xt_redist xt_redist_p2p_aext_custom_new(Xt_xmap xmap, int num_src_ext, const struct Xt_aoffset_ext src_extents[], int num_dst_ext, const struct Xt_aoffset_ext dst_extents[], MPI_Datatype datatype, Xt_config config)
Xt_redist xt_redist_p2p_ext_custom_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_config config)
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)
void(* xt_sort_idxpos)(idxpos_type *v, size_t n)
void(* xt_sort_int)(int *a, size_t n)
void(* xt_sort_xt_int_permutation)(Xt_int *restrict a, size_t n, int *restrict permutation)
void(* xt_sort_xt_int)(Xt_int *a, size_t n)
void(* xt_sort_int_permutation)(int *restrict a, size_t n, int *restrict permutation)
void(* xt_sort_index)(Xt_int *restrict a, int n, int *restrict idx, int reset_index)
exchange map declarations
Xt_xmap xt_xmap_all2all_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_all2all_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm, Xt_config config)
Xt_xmap xt_xmap_dist_dir_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm)
Xt_xmap xt_xmap_dist_dir_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm comm, Xt_config config)
int(* Xt_xmdd_bucket_gen_init_state)(void *gen_state, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, Xt_config config, const struct Xt_xmdd_bucket_gen_comms *comms, void *init_params)
void xt_xmdd_bucket_gen_define_interface(Xt_xmdd_bucket_gen gen, Xt_xmdd_bucket_gen_init_state init, Xt_xmdd_bucket_gen_destroy_state destroy, Xt_xmdd_bucket_gen_get_intersect_max_num get_intersect_max_num, Xt_xmdd_bucket_gen_next next, size_t gen_state_size, void *init_params)
void(* Xt_xmdd_bucket_gen_destroy_state)(void *gen_state)
int(* Xt_xmdd_bucket_gen_get_intersect_max_num)(void *gen_state, int type)
struct Xt_com_list(* Xt_xmdd_bucket_gen_next)(void *gen_state, int type)
Default bucket generator for creation of distributed directories.
int(* Xt_xmdd_bucket_gen_init_state_f)(void *gen_state, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, Xt_config config, struct Xt_xmdd_bucket_gen_comms_f *comms, void *init_params)
Xt_xmap xt_xmap_dist_dir_intercomm_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm)
Xt_xmap xt_xmap_dist_dir_intercomm_custom_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_Comm inter_comm, MPI_Comm intra_comm, Xt_config config)
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)
Xt_xmap xt_xmap_intersection_pos_new(int num_src_msg, const struct Xt_com_pos src_com[num_src_msg], int num_dst_msg, const struct Xt_com_pos dst_com[num_dst_msg], MPI_Comm comm)
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_f2c(struct xt_redist_f *p)
Xt_request xt_request_f2c(struct xt_request_f *p)
PPM_DSO_INTERNAL void * xt_xmap_intersection_pos_new_f2c(int num_src_msg, const void *src_com, int num_dst_msg, const void *dst_com, MPI_Fint comm)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_ext_custom_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, struct xt_config_f *config)
static int f2c_xmdd_bucket_gen_init_state(void *gen_state, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, Xt_config config, const struct Xt_xmdd_bucket_gen_comms *comms, void *init_params, const struct Xt_xmdd_bucket_gen_ *bgd)
static const char filename[]
MPI_Fint xt_idxlist_get_pack_size_f2c(struct xt_idxlist_f *idxlist, MPI_Fint comm_f)
MPI_Fint xt_get_default_comm_f(void)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_blocks_off_custom_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, struct xt_config_f *config)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_new_f(struct xt_xmap_f *xmap_f, MPI_Fint datatype_f)
PPM_DSO_INTERNAL 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)
Xt_xmdd_bucket_gen xt_xmdd_bucket_gen_f2c(struct xt_xmdd_bucket_gen_f *p)
PPM_DSO_INTERNAL 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)
PPM_DSO_INTERNAL int xt_com_list_contiguous(const struct Xt_com_list *p_com_a, const struct Xt_com_list *p_com_b)
PPM_DSO_INTERNAL 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)
PPM_DSO_INTERNAL 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)
static void xt_slice_c_loc_f2c(void *a, void **p)
PPM_DSO_INTERNAL Xt_redist 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)
void xt_sort_xt_int_permutation_f2c(Xt_int *a, size_t n, int *permutation)
void xt_sort_int_f2c(int *a, size_t n)
PPM_DSO_INTERNAL 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)
PPM_DSO_INTERNAL void xt_abort_f(MPI_Fint comm_f, const char *msg, const char *source, MPI_Fint line) __attribute__((noreturn))
PPM_DSO_INTERNAL Xt_redist xt_redist_collection_static_custom_new_f(Xt_redist *redists, MPI_Fint num_redists, MPI_Aint *src_displacements, MPI_Aint *dst_displacements, MPI_Fint comm_f, struct xt_config_f *config)
PPM_DSO_INTERNAL Xt_xmap xt_xmap_dist_dir_intercomm_custom_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, struct xt_config_f *config_f)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_aext_custom_new_c2f(Xt_xmap *xmap, int num_src_ext, struct Xt_aoffset_ext src_extents[], int num_dst_ext, struct Xt_aoffset_ext dst_extents[], MPI_Fint datatype_f, struct xt_config_f *config)
PPM_DSO_INTERNAL Xt_xmap xt_xmap_dist_dir_custom_new_f(struct xt_idxlist_f *src_idxlist_f, struct xt_idxlist_f *dst_idxlist_f, MPI_Fint comm_f, struct xt_config_f *config_f)
FCALLSCSUB5(xt_idxlist_pack_f2c, XT_IDXLIST_PACK_F, xt_idxlist_pack_f, PVOID, PVOID, INT, PINT, INT)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_off_custom_new_f(struct xt_xmap_f *xmap_f, MPI_Fint *src_offsets, MPI_Fint *dst_offsets, MPI_Fint datatype_f, struct xt_config_f *config)
PPM_DSO_INTERNAL void * xt_redist_single_array_base_new_c2f(int nsend, int nrecv, const struct xt_redist_msg_f *send_msgs_f, const struct xt_redist_msg_f *recv_msgs_f, MPI_Fint comm_f)
void xt_sort_xt_int_f2c(Xt_int *a, size_t n)
PPM_DSO_INTERNAL Xt_redist xt_redist_collection_custom_new_f(Xt_redist *redists, MPI_Fint num_redists, MPI_Fint cache_size, MPI_Fint comm_f, struct xt_config_f *config)
PPM_DSO_INTERNAL Xt_xmap xt_xmap_all2all_custom_new_f(struct xt_idxlist_f *src_idxlist_f, struct xt_idxlist_f *dst_idxlist_f, MPI_Fint comm_f, struct xt_config_f *config_f)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_aext_new_c2f(Xt_xmap *xmap, int num_src_ext, struct Xt_aoffset_ext src_extents[], int num_dst_ext, struct Xt_aoffset_ext dst_extents[], MPI_Fint datatype_f)
static void xt_xmdd_bucket_gen_define_interface_f2c(Xt_xmdd_bucket_gen *gen, Xt_xmdd_bucket_gen_init_state_f init, Xt_xmdd_bucket_gen_destroy_state destroy, Xt_xmdd_bucket_gen_get_intersect_max_num get_intersect_max_num, Xt_xmdd_bucket_gen_next next, long gen_state_size, void *init_params)
static void xt_idxlist_pack_f2c(struct xt_idxlist_f *idxlist, void *buffer, MPI_Fint buffer_size, MPI_Fint *position, MPI_Fint comm_f)
PPM_DSO_INTERNAL Xt_redist xt_redist_collection_new_f(Xt_redist *redists, MPI_Fint num_redists, MPI_Fint cache_size, MPI_Fint comm_f)
PPM_DSO_INTERNAL void * xt_redist_single_array_base_custom_new_c2f(int nsend, int nrecv, const struct xt_redist_msg_f *send_msgs_f, const struct xt_redist_msg_f *recv_msgs_f, MPI_Fint comm_f, const struct xt_config_f *config)
void xt_initialize_f(MPI_Fint *comm_f)
void xt_sort_int_permutation_f2c(int *a, size_t n, int *permutation)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_custom_new_f(struct xt_xmap_f *xmap_f, MPI_Fint datatype_f, struct xt_config_f *config)
Xt_idxlist xt_idxlist_f2c(struct xt_idxlist_f *p)
PPM_DSO_INTERNAL Xt_redist xt_redist_p2p_blocks_custom_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, struct xt_config_f *config)
MPI_Fint xt_redist_get_recv_MPI_Datatype_c2f(Xt_redist *redist, MPI_Fint rank)
PPM_DSO_INTERNAL 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)
FCALLSCSUB7(xt_xmdd_bucket_gen_define_interface_f2c, XT_XMDD_BUCKET_GEN_DEFINE_INTERFACE_F, xt_xmdd_bucket_gen_define_interface_f, PVOID, ROUTINE, ROUTINE, ROUTINE, ROUTINE, LONG, PVOID)
Xt_xmap xt_xmap_f2c(struct xt_xmap_f *p)
MPI_Fint xt_redist_get_mpi_comm_c2f(Xt_redist *redist)
PPM_DSO_INTERNAL int xt_redist_msg_contiguous(const struct xt_redist_msg_f *p_msgs_a, const struct xt_redist_msg_f *p_msgs_b)
MPI_Fint xt_redist_get_send_MPI_Datatype_c2f(Xt_redist *redist, MPI_Fint rank)
void xt_sort_idxpos_f2c(idxpos_type *a, size_t n)
Xt_config xt_config_f2c(struct xt_config_f *p)
PPM_DSO_INTERNAL 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)
PPM_DSO_INTERNAL 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)
void xt_sort_index_f2c(Xt_int *restrict a, int n, int *restrict idx, int reset_index)