Yet Another eXchange Tool 0.11.3
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
xt_xmap_intersection_ext.c File Reference
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
#include "xt/xt_idxlist.h"
#include "xt_idxlist_internal.h"
#include "xt_idxlist_unpack.h"
#include "xt/xt_idxvec.h"
#include "xt_idxvec_internal.h"
#include "xt/xt_xmap.h"
#include "xt_xmap_internal.h"
#include "xt/xt_mpi.h"
#include "xt_mpi_internal.h"
#include "core/core.h"
#include "core/ppm_xfuncs.h"
#include "xt/xt_xmap_intersection.h"
#include "xt_xmap_intersection_common.h"
#include "xt_arithmetic_util.h"
#include "ensure_array_size.h"
#include "xt_cover.h"
#include "xt_config_internal.h"
Include dependency graph for xt_xmap_intersection_ext.c:

Go to the source code of this file.

Classes

struct  exchange_ext
 
struct  Xt_xmap_intersection_ext_
 
struct  ted_result
 
struct  tes_result
 
struct  Xt_pos_ext_overlap
 
struct  up_state
 
struct  spread_state
 
struct  Xt_xmap_iter_intersection_ext_
 

Typedefs

typedef struct Xt_xmap_intersection_ext_Xt_xmap_intersection_ext
 
typedef int(* Xt_pos_ext_copy) (size_t num_orig_pos_ext, size_t *num_pos_ext, struct Xt_pos_ext **pos_ext, const struct Xt_pos_ext *orig_pos_ext, size_t num_orig_pos, const int *orig_pos, void *state)
 
typedef struct Xt_xmap_iter_intersection_ext_Xt_xmap_iter_intersection_ext
 

Functions

static MPI_Comm xmap_intersection_ext_get_communicator (Xt_xmap xmap)
 
static int xmap_intersection_ext_get_num_destinations (Xt_xmap xmap)
 
static int xmap_intersection_ext_get_num_sources (Xt_xmap xmap)
 
static void xmap_intersection_ext_get_destination_ranks (Xt_xmap xmap, int *ranks)
 
static void xmap_intersection_ext_get_source_ranks (Xt_xmap xmap, int *ranks)
 
static Xt_xmap_iter xmap_intersection_ext_get_in_iterator (Xt_xmap xmap)
 
static Xt_xmap_iter xmap_intersection_ext_get_out_iterator (Xt_xmap xmap)
 
static Xt_xmap xmap_intersection_ext_copy (Xt_xmap xmap)
 
static void xmap_intersection_ext_delete (Xt_xmap xmap)
 
static int xmap_intersection_ext_get_max_src_pos (Xt_xmap xmap)
 
static int xmap_intersection_ext_get_max_dst_pos (Xt_xmap xmap)
 
static Xt_xmap xmap_intersection_ext_reorder (Xt_xmap xmap, enum xt_reorder_type type, Xt_config config)
 
static Xt_xmap xmap_intersection_ext_update_positions (Xt_xmap xmap, const int *src_positions, const int *dst_positions)
 
static Xt_xmap xmap_intersection_ext_spread (Xt_xmap xmap, int num_repetitions, const int src_displacements[num_repetitions], const int dst_displacements[num_repetitions])
 
static Xt_xmap_intersection_ext xmie (void *xmap)
 
static void xmap_intersection_ext_get_destination_ranks (Xt_xmap xmap, int *restrict ranks)
 
static void xmap_intersection_ext_get_source_ranks (Xt_xmap xmap, int *restrict ranks)
 
static int pos_ext_copy_verbatim (size_t num_orig_pos_ext, size_t *num_pos_ext, struct Xt_pos_ext **pos_ext, const struct Xt_pos_ext *orig_pos_ext, size_t num_orig_pos, const int *orig_pos, void *state)
 
static void xmap_intersection_ext_msg_copy (size_t nmsg, const struct exchange_ext *restrict msg, int *nmsg_copy, struct exchange_ext *restrict msg_copy, int *max_pos_, int num_repetitions, Xt_pos_ext_copy pos_ext_copy, void *pec_state)
 
static Xt_xmap xmap_intersection_ext_copy_ (Xt_xmap xmap, int num_repetitions, Xt_pos_ext_copy pe_cpy_in, void *peci_state, Xt_pos_ext_copy pe_cpy_out, void *peco_state)
 
static void xt_free_exchange_ext (size_t num_msg, struct exchange_ext *restrict msg)
 
static void generate_transfer_ext (struct Xt_xmap_intersection_ext_ *xmap, 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_local, Xt_idxlist dst_idxlist_local, MPI_Comm 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_ext_custom_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_config config)
 
static struct ted_result generate_dir_transfer_pos_ext_dst (int num_intersections, const struct Xt_com_list intersections[num_intersections], Xt_idxlist mypart_idxlist, struct exchange_ext *resSets, int(*restrict dst_removals_per_intersection)[2], Xt_config config)
 
static struct Xt_pos_extexchange_pos_ext_modifications (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], struct exchange_ext dst_ext[num_dst_intersections], int(*restrict src_removals_per_intersection)[2], const int(*restrict dst_removals_per_intersection)[2], int tag_offset, MPI_Comm comm)
 
static void remap_dst_intersections (int num_dst_intersections, const struct Xt_com_list dst_com[num_dst_intersections], Xt_idxlist mypart_idxlist, int resCount, struct exchange_ext resSets[resCount], const int(*removals_per_intersection)[2], Xt_config config)
 
static struct tes_result generate_dir_transfer_pos_ext_src (int num_intersections, const struct Xt_com_list intersections[num_intersections], Xt_idxlist mypart_idxlist, struct exchange_ext *resSets, const int(*restrict removals_per_intersection)[2], const struct Xt_pos_ext *pos_updates, Xt_config config)
 
static struct Xt_pos_ext_overlap Xt_get_pos_ext_overlap (struct Xt_pos_ext a, struct Xt_pos_ext b)
 
static void cut_pos_ext_from_pos_exts (struct Xt_pos_ext pos_ext, struct Xt_pos_ext_vec *pos_exts)
 
static struct Xt_pos_extget_pos_exts_of_index_stripes (Xt_idxlist idxlist, int num_stripes, const struct Xt_stripe stripes[num_stripes], int *num_ext, int single_match_only, Xt_config config)
 
static struct ted_result generate_dir_transfer_pos_ext_dst (int num_intersections, const struct Xt_com_list intersections[num_intersections], Xt_idxlist mypart_idxlist, struct exchange_ext *restrict resSets, int(*restrict dst_removals_per_intersection)[2], Xt_config config)
 
static void remap_intersection (Xt_idxlist mypart_idxlist, Xt_idxlist intersection, size_t num_pos_updates, const struct Xt_pos_ext pos_updates[num_pos_updates], struct exchange_ext *resSet, int single_match_only, Xt_config config)
 
static int pos_ext_find_max_pos (int num_pos_ext, const struct Xt_pos_ext *restrict pos_ext)
 
static struct Xt_striperefine_stripes (int *num_stripes_, struct Xt_stripe *restrict intersection_idxstripes, size_t num_pos_updates, const struct Xt_pos_ext *restrict pos_updates)
 
static struct Xt_pos_extexchange_transfer_pos_ext (int n_out, const struct exchange_ext *restrict out_msg, int n_in, const struct exchange_ext *restrict in_msg, struct exchange_ext *restrict remote_out_msg, int tag_offset, MPI_Comm comm)
 
static void sort_transfer_pos_ext (int n, struct exchange_ext *msg, Xt_config config)
 
static void sort_transfer_pos_ext_permutation (int n, struct exchange_ext *msg, struct exchange_ext *permutation_msg, Xt_config config)
 
static void reorder_transfer_pos_ext (int n_out, int n_in, struct exchange_ext *out_msg, struct exchange_ext *in_msg, int tag_offset, MPI_Comm comm, Xt_config config)
 
static int update_positions (size_t num_orig_pos_ext, size_t *num_pos_ext, struct Xt_pos_ext **pos_ext, const struct Xt_pos_ext *orig_pos_ext, size_t num_orig_pos, const int *orig_pos, void *state_)
 
static int pos_ext_copy_spread (size_t num_orig_pos_ext, size_t *num_pos_ext, struct Xt_pos_ext **pos_ext, const struct Xt_pos_ext *orig_pos_ext, size_t num_orig_pos, const int *orig_pos, void *state)
 
static int xmap_intersection_ext_iterator_next (Xt_xmap_iter iter)
 
static int xmap_intersection_ext_iterator_get_rank (Xt_xmap_iter iter)
 
static int const * xmap_intersection_ext_iterator_get_transfer_pos (Xt_xmap_iter iter)
 
static int xmap_intersection_ext_iterator_get_num_transfer_pos (Xt_xmap_iter iter)
 
static const struct Xt_pos_extxmap_intersection_ext_iterator_get_transfer_pos_ext (Xt_xmap_iter iter)
 
static int xmap_intersection_ext_iterator_get_num_transfer_pos_ext (Xt_xmap_iter iter)
 
static void xmap_intersection_ext_iterator_delete (Xt_xmap_iter iter)
 
static Xt_xmap_iter_intersection_ext xmiei (void *iter)
 

Variables

static const char filename [] = "xt_xmap_intersection_ext.c"
 
static const struct Xt_xmap_vtable xmap_intersection_vtable
 
static const struct Xt_xmap_iter_vtable xmap_iterator_intersection_ext_vtable
 

Detailed Description

Author
Jörg Behrens behre.nosp@m.ns@d.nosp@m.krz.d.nosp@m.e Moritz Hanke hanke.nosp@m.@dkr.nosp@m.z.de Thomas Jahns jahns.nosp@m.@dkr.nosp@m.z.de

Definition in file xt_xmap_intersection_ext.c.

Typedef Documentation

◆ Xt_pos_ext_copy

typedef int(* Xt_pos_ext_copy) (size_t num_orig_pos_ext, size_t *num_pos_ext, struct Xt_pos_ext **pos_ext, const struct Xt_pos_ext *orig_pos_ext, size_t num_orig_pos, const int *orig_pos, void *state)

Definition at line 211 of file xt_xmap_intersection_ext.c.

◆ Xt_xmap_intersection_ext

Definition at line 155 of file xt_xmap_intersection_ext.c.

◆ Xt_xmap_iter_intersection_ext

Definition at line 1481 of file xt_xmap_intersection_ext.c.

Function Documentation

◆ cut_pos_ext_from_pos_exts()

static void cut_pos_ext_from_pos_exts ( struct Xt_pos_ext pos_ext,
struct Xt_pos_ext_vec * pos_exts )
static

Definition at line 738 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ exchange_pos_ext_modifications()

static struct Xt_pos_ext * exchange_pos_ext_modifications ( 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],
struct exchange_ext dst_ext[num_dst_intersections],
int(*) src_removals_per_intersection[2],
const int(*) dst_removals_per_intersection[2],
int tag_offset,
MPI_Comm comm )
static

Definition at line 783 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ exchange_transfer_pos_ext()

static struct Xt_pos_ext * exchange_transfer_pos_ext ( int n_out,
const struct exchange_ext *restrict out_msg,
int n_in,
const struct exchange_ext *restrict in_msg,
struct exchange_ext *restrict remote_out_msg,
int tag_offset,
MPI_Comm comm )
static

Definition at line 1076 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ generate_dir_transfer_pos_ext_dst() [1/2]

static struct ted_result generate_dir_transfer_pos_ext_dst ( int num_intersections,
const struct Xt_com_list intersections[num_intersections],
Xt_idxlist mypart_idxlist,
struct exchange_ext * resSets,
int(*) dst_removals_per_intersection[2],
Xt_config config )
static
Here is the caller graph for this function:

◆ generate_dir_transfer_pos_ext_dst() [2/2]

static struct ted_result generate_dir_transfer_pos_ext_dst ( int num_intersections,
const struct Xt_com_list intersections[num_intersections],
Xt_idxlist mypart_idxlist,
struct exchange_ext *restrict resSets,
int(*) dst_removals_per_intersection[2],
Xt_config config )
static

Definition at line 589 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ generate_dir_transfer_pos_ext_src()

static struct tes_result generate_dir_transfer_pos_ext_src ( int num_intersections,
const struct Xt_com_list intersections[num_intersections],
Xt_idxlist mypart_idxlist,
struct exchange_ext * resSets,
const int(*) removals_per_intersection[2],
const struct Xt_pos_ext * pos_updates,
Xt_config config )
static

Definition at line 937 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generate_transfer_ext()

static void generate_transfer_ext ( struct Xt_xmap_intersection_ext_ * xmap,
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_local,
Xt_idxlist dst_idxlist_local,
MPI_Comm comm,
Xt_config config )
static

Definition at line 459 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_pos_exts_of_index_stripes()

static struct Xt_pos_ext * get_pos_exts_of_index_stripes ( Xt_idxlist idxlist,
int num_stripes,
const struct Xt_stripe stripes[num_stripes],
int * num_ext,
int single_match_only,
Xt_config config )
static

Definition at line 570 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pos_ext_copy_spread()

static int pos_ext_copy_spread ( size_t num_orig_pos_ext,
size_t * num_pos_ext,
struct Xt_pos_ext ** pos_ext,
const struct Xt_pos_ext * orig_pos_ext,
size_t num_orig_pos,
const int * orig_pos,
void * state )
static

Definition at line 1405 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ pos_ext_copy_verbatim()

static int pos_ext_copy_verbatim ( size_t num_orig_pos_ext,
size_t * num_pos_ext,
struct Xt_pos_ext ** pos_ext,
const struct Xt_pos_ext * orig_pos_ext,
size_t num_orig_pos,
const int * orig_pos,
void * state )
static

Definition at line 219 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ pos_ext_find_max_pos()

static int pos_ext_find_max_pos ( int num_pos_ext,
const struct Xt_pos_ext *restrict pos_ext )
inlinestatic

Definition at line 922 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ refine_stripes()

static struct Xt_stripe * refine_stripes ( int * num_stripes_,
struct Xt_stripe *restrict intersection_idxstripes,
size_t num_pos_updates,
const struct Xt_pos_ext *restrict pos_updates )
static

Definition at line 988 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ remap_dst_intersections()

static void remap_dst_intersections ( int num_dst_intersections,
const struct Xt_com_list dst_com[num_dst_intersections],
Xt_idxlist mypart_idxlist,
int resCount,
struct exchange_ext resSets[resCount],
const int(*) removals_per_intersection[2],
Xt_config config )
static

Definition at line 890 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ remap_intersection()

static void remap_intersection ( Xt_idxlist mypart_idxlist,
Xt_idxlist intersection,
size_t num_pos_updates,
const struct Xt_pos_ext pos_updates[num_pos_updates],
struct exchange_ext * resSet,
int single_match_only,
Xt_config config )
static

Definition at line 1045 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reorder_transfer_pos_ext()

static void reorder_transfer_pos_ext ( int n_out,
int n_in,
struct exchange_ext * out_msg,
struct exchange_ext * in_msg,
int tag_offset,
MPI_Comm comm,
Xt_config config )
static

Definition at line 1264 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sort_transfer_pos_ext()

static void sort_transfer_pos_ext ( int n,
struct exchange_ext * msg,
Xt_config config )
static

Definition at line 1155 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sort_transfer_pos_ext_permutation()

static void sort_transfer_pos_ext_permutation ( int n,
struct exchange_ext * msg,
struct exchange_ext * permutation_msg,
Xt_config config )
static

Definition at line 1204 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_positions()

static int update_positions ( size_t num_orig_pos_ext,
size_t * num_pos_ext,
struct Xt_pos_ext ** pos_ext,
const struct Xt_pos_ext * orig_pos_ext,
size_t num_orig_pos,
const int * orig_pos,
void * state_ )
static

Definition at line 1337 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xmap_intersection_ext_copy()

static Xt_xmap xmap_intersection_ext_copy ( Xt_xmap xmap)
static

Definition at line 297 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xmap_intersection_ext_copy_()

static Xt_xmap xmap_intersection_ext_copy_ ( Xt_xmap xmap,
int num_repetitions,
Xt_pos_ext_copy pe_cpy_in,
void * peci_state,
Xt_pos_ext_copy pe_cpy_out,
void * peco_state )
static

Definition at line 263 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xmap_intersection_ext_delete()

static void xmap_intersection_ext_delete ( Xt_xmap xmap)
static

Definition at line 314 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_communicator()

static MPI_Comm xmap_intersection_ext_get_communicator ( Xt_xmap xmap)
static

Definition at line 162 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_destination_ranks() [1/2]

static void xmap_intersection_ext_get_destination_ranks ( Xt_xmap xmap,
int * ranks )
static

◆ xmap_intersection_ext_get_destination_ranks() [2/2]

static void xmap_intersection_ext_get_destination_ranks ( Xt_xmap xmap,
int *restrict ranks )
static

Definition at line 183 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_in_iterator()

static Xt_xmap_iter xmap_intersection_ext_get_in_iterator ( Xt_xmap xmap)
static

Definition at line 1491 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_max_dst_pos()

static int xmap_intersection_ext_get_max_dst_pos ( Xt_xmap xmap)
static

Definition at line 207 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_max_src_pos()

static int xmap_intersection_ext_get_max_src_pos ( Xt_xmap xmap)
static

Definition at line 203 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_num_destinations()

static int xmap_intersection_ext_get_num_destinations ( Xt_xmap xmap)
static

Definition at line 168 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_num_sources()

static int xmap_intersection_ext_get_num_sources ( Xt_xmap xmap)
static

Definition at line 175 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_out_iterator()

static Xt_xmap_iter xmap_intersection_ext_get_out_iterator ( Xt_xmap xmap)
static

Definition at line 1507 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_get_source_ranks() [1/2]

static void xmap_intersection_ext_get_source_ranks ( Xt_xmap xmap,
int * ranks )
static

◆ xmap_intersection_ext_get_source_ranks() [2/2]

static void xmap_intersection_ext_get_source_ranks ( Xt_xmap xmap,
int *restrict ranks )
static

Definition at line 194 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_delete()

static void xmap_intersection_ext_iterator_delete ( Xt_xmap_iter iter)
static

Definition at line 1582 of file xt_xmap_intersection_ext.c.

◆ xmap_intersection_ext_iterator_get_num_transfer_pos()

static int xmap_intersection_ext_iterator_get_num_transfer_pos ( Xt_xmap_iter iter)
static

Definition at line 1565 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_get_num_transfer_pos_ext()

static int xmap_intersection_ext_iterator_get_num_transfer_pos_ext ( Xt_xmap_iter iter)
static

Definition at line 1577 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_get_rank()

static int xmap_intersection_ext_iterator_get_rank ( Xt_xmap_iter iter)
static

Definition at line 1542 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_get_transfer_pos()

static int const * xmap_intersection_ext_iterator_get_transfer_pos ( Xt_xmap_iter iter)
static

Definition at line 1549 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_get_transfer_pos_ext()

static const struct Xt_pos_ext * xmap_intersection_ext_iterator_get_transfer_pos_ext ( Xt_xmap_iter iter)
static

Definition at line 1571 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_iterator_next()

static int xmap_intersection_ext_iterator_next ( Xt_xmap_iter iter)
static

Definition at line 1529 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_msg_copy()

static void xmap_intersection_ext_msg_copy ( size_t nmsg,
const struct exchange_ext *restrict msg,
int * nmsg_copy,
struct exchange_ext *restrict msg_copy,
int * max_pos_,
int num_repetitions,
Xt_pos_ext_copy pos_ext_copy,
void * pec_state )
static

Definition at line 235 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xmap_intersection_ext_reorder()

static Xt_xmap xmap_intersection_ext_reorder ( Xt_xmap xmap,
enum xt_reorder_type type,
Xt_config config )
static

Definition at line 1298 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_spread()

static Xt_xmap xmap_intersection_ext_spread ( Xt_xmap xmap,
int num_repetitions,
const int src_displacements[num_repetitions],
const int dst_displacements[num_repetitions] )
static

Definition at line 1439 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmap_intersection_ext_update_positions()

static Xt_xmap xmap_intersection_ext_update_positions ( Xt_xmap xmap,
const int * src_positions,
const int * dst_positions )
static

Definition at line 1373 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:

◆ xmie()

static Xt_xmap_intersection_ext xmie ( void * xmap)
inlinestatic

Definition at line 157 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ xmiei()

static Xt_xmap_iter_intersection_ext xmiei ( void * iter)
inlinestatic

Definition at line 1524 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ xt_free_exchange_ext()

static void xt_free_exchange_ext ( size_t num_msg,
struct exchange_ext *restrict msg )
static

Definition at line 306 of file xt_xmap_intersection_ext.c.

Here is the caller graph for this function:

◆ Xt_get_pos_ext_overlap()

static struct Xt_pos_ext_overlap Xt_get_pos_ext_overlap ( struct Xt_pos_ext a,
struct Xt_pos_ext b )
static

Definition at line 531 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xt_xmap_intersection_ext_custom_new()

Xt_xmap xt_xmap_intersection_ext_custom_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_config config )

constructor for an exchange map
This operation is collective over all processes in comm
it uses the provided intersection information to generate the exchange map. Internally this function uses ranges to represent index list positions and is therefore conserving space for somewhat contiguous index lists. Depending on the size and shape of intersections this can impact performance drastically.

Parameters
[in]num_src_intersectionsnumber of source intersections
[in]src_comarray containing the source intersections with the other processes and their rank
[in]num_dst_intersectionsnumber of destination intersections
[in]dst_comarray containing the destination intersections with the other processes and their rank
[in]src_idxlistsource index list
[in]dst_idxlistdestination index list
[in]commMPI communicator that contains all processes that part in the exchange
[in]configcustom parameter object

Definition at line 354 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xt_xmap_intersection_ext_new()

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 )

constructor for an exchange map
This operation is collective over all processes in comm
it uses the provided intersection information to generate the exchange map. Internally this function uses ranges to represent index list positions and is therefore conserving space for somewhat contiguous index lists. Depending on the size and shape of intersections this can impact performance drastically.

Parameters
[in]num_src_intersectionsnumber of source intersections
[in]src_comarray containing the source intersections with the other processes and their rank
[in]num_dst_intersectionsnumber of destination intersections
[in]dst_comarray containing the destination intersections with the other processes and their rank
[in]src_idxlistsource index list
[in]dst_idxlistdestination index list
[in]commMPI communicator that contains all processes that part in the exchange

Definition at line 337 of file xt_xmap_intersection_ext.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ filename

const char filename[] = "xt_xmap_intersection_ext.c"
static

Definition at line 79 of file xt_xmap_intersection_ext.c.

◆ xmap_intersection_vtable

const struct Xt_xmap_vtable xmap_intersection_vtable
static
Initial value:
= {
static Xt_xmap xmap_intersection_ext_copy(Xt_xmap xmap)
static int xmap_intersection_ext_get_num_destinations(Xt_xmap xmap)
static int xmap_intersection_ext_get_max_dst_pos(Xt_xmap xmap)
static Xt_xmap_iter xmap_intersection_ext_get_out_iterator(Xt_xmap xmap)
static void xmap_intersection_ext_get_destination_ranks(Xt_xmap xmap, int *ranks)
static void xmap_intersection_ext_get_source_ranks(Xt_xmap xmap, int *ranks)
static Xt_xmap xmap_intersection_ext_reorder(Xt_xmap xmap, enum xt_reorder_type type, Xt_config config)
static int xmap_intersection_ext_get_num_sources(Xt_xmap xmap)
static Xt_xmap xmap_intersection_ext_spread(Xt_xmap xmap, int num_repetitions, const int src_displacements[num_repetitions], const int dst_displacements[num_repetitions])
static int xmap_intersection_ext_get_max_src_pos(Xt_xmap xmap)
static Xt_xmap xmap_intersection_ext_update_positions(Xt_xmap xmap, const int *src_positions, const int *dst_positions)
static void xmap_intersection_ext_delete(Xt_xmap xmap)
static Xt_xmap_iter xmap_intersection_ext_get_in_iterator(Xt_xmap xmap)
static MPI_Comm xmap_intersection_ext_get_communicator(Xt_xmap xmap)

Definition at line 115 of file xt_xmap_intersection_ext.c.

◆ xmap_iterator_intersection_ext_vtable

const struct Xt_xmap_iter_vtable xmap_iterator_intersection_ext_vtable
static
Initial value:
= {
.get_num_transfer_pos_ext
static const struct Xt_pos_ext * xmap_intersection_ext_iterator_get_transfer_pos_ext(Xt_xmap_iter iter)
static int const * xmap_intersection_ext_iterator_get_transfer_pos(Xt_xmap_iter iter)
static int xmap_intersection_ext_iterator_get_num_transfer_pos(Xt_xmap_iter iter)
static int xmap_intersection_ext_iterator_get_num_transfer_pos_ext(Xt_xmap_iter iter)
static int xmap_intersection_ext_iterator_get_rank(Xt_xmap_iter iter)
static void xmap_intersection_ext_iterator_delete(Xt_xmap_iter iter)
static int xmap_intersection_ext_iterator_next(Xt_xmap_iter iter)

Definition at line 1471 of file xt_xmap_intersection_ext.c.