Yet Another eXchange Tool 0.11.1
Loading...
Searching...
No Matches
Functions
xt_xmap_dist_dir_common.c File Reference

Implementation of utility functions for creation of distributed directories. More...

#include <string.h>
#include <assert.h>
#include "core/ppm_xfuncs.h"
#include "xt/xt_idxstripes.h"
#include "xt/xt_mpi.h"
#include "xt/xt_xmap_dist_dir.h"
#include "xt/xt_xmap_dist_dir_intercomm.h"
#include "xt_arithmetic_util.h"
#include "xt_xmap_dist_dir_common.h"
#include "ensure_array_size.h"
#include "xt_idxlist_internal.h"
#include "xt_idxstripes_internal.h"
#include "xt_config_internal.h"
Include dependency graph for xt_xmap_dist_dir_common.c:

Go to the source code of this file.

Functions

static void xt_xmdd_free_dist_dir (struct dist_dir *dist_dir)
 
void xt_xmdd_free_dist_dirs (struct dist_dir_pair dist_dirs)
 
struct Xt_xmdd_txstat xt_xmap_dist_dir_send_intersections (void *restrict send_buffer, size_t send_size_asize, size_t send_size_entry, int tag, MPI_Comm comm, int rank_lim, MPI_Request *restrict requests, const int send_size[rank_lim][send_size_asize])
 
size_t xt_xmap_dist_dir_match_src_dst (const struct dist_dir *src_dist_dir, const struct dist_dir *dst_dist_dir, struct isect **src_dst_intersections, Xt_config config)
 
size_t xt_xmap_dist_dir_pack_intersections (enum xt_xmdd_direction target, size_t num_intersections, const struct isect *restrict src_dst_intersections, bool isect_idxlist_delete, size_t send_size_asize, size_t send_size_idx, int(*send_size)[send_size_asize], unsigned char *buffer, size_t buf_size, size_t *ofs, MPI_Comm comm)
 
static int stripe_cmp (const void *a, const void *b)
 
void xt_xmap_dist_dir_same_rank_merge (struct dist_dir **dist_dir_results)
 
int xt_xmdd_cmp_isect_src_rank (const void *a_, const void *b_)
 
int xt_xmdd_cmp_isect_dst_rank (const void *a_, const void *b_)
 
int xt_com_list_rank_cmp (const void *a_, const void *b_)
 
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)
 

Detailed Description

Implementation of utility functions for creation of distributed directories.

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_dist_dir_common.c.

Function Documentation

◆ stripe_cmp()

static int stripe_cmp ( const void *  a,
const void *  b 
)
static

Definition at line 206 of file xt_xmap_dist_dir_common.c.

Here is the caller graph for this function:

◆ xt_com_list_rank_cmp()

int xt_com_list_rank_cmp ( const void *  a_,
const void *  b_ 
)

Definition at line 280 of file xt_xmap_dist_dir_common.c.

Here is the caller graph for this function:

◆ xt_xmap_dist_dir_custom_new()

Xt_xmap xt_xmap_dist_dir_custom_new ( Xt_idxlist  src_idxlist,
Xt_idxlist  dst_idxlist,
MPI_Comm  comm,
Xt_config  config 
)

Construct an exchange map.
This operation is collective over all processes in comm.
It uses a distributed directory to reduce communication and computation during the initialisation at the cost of some extra latency because more network transfers than for xt_xmap_all2all_new are required.

Parameters
[in]src_idxlistsource index list
[in]dst_idxlistdestination index list
[in]commMPI communicator that contains all processes that take part in the exchange (xt_xmap_dist_dir_new will make its own copy of comm)
[in]configObject holding non-default configuration settings for the ensuing operations.

Definition at line 296 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmap_dist_dir_match_src_dst()

size_t xt_xmap_dist_dir_match_src_dst ( const struct dist_dir src_dist_dir,
const struct dist_dir dst_dist_dir,
struct isect **  src_dst_intersections,
Xt_config  config 
)

Definition at line 111 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmap_dist_dir_new()

Xt_xmap xt_xmap_dist_dir_new ( Xt_idxlist  src_idxlist,
Xt_idxlist  dst_idxlist,
MPI_Comm  comm 
)

Construct an exchange map.
This operation is collective over all processes in comm.
It uses a distributed directory to reduce communication and computation during the initialisation at the cost of some extra latency because more network transfers than for xt_xmap_all2all_new are required.

Parameters
[in]src_idxlistsource index list
[in]dst_idxlistdestination index list
[in]commMPI communicator that contains all processes that take part in the exchange (xt_xmap_dist_dir_new will make its own copy of comm)

Definition at line 288 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmap_dist_dir_pack_intersections()

size_t xt_xmap_dist_dir_pack_intersections ( enum xt_xmdd_direction  target,
size_t  num_intersections,
const struct isect *restrict  src_dst_intersections,
bool  isect_idxlist_delete,
size_t  send_size_asize,
size_t  send_size_idx,
int(*)  send_size[send_size_asize],
unsigned char *  buffer,
size_t  buf_size,
size_t *  ofs,
MPI_Comm  comm 
)

Definition at line 156 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmap_dist_dir_same_rank_merge()

void xt_xmap_dist_dir_same_rank_merge ( struct dist_dir **  dist_dir_results)

Definition at line 222 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmap_dist_dir_send_intersections()

struct Xt_xmdd_txstat xt_xmap_dist_dir_send_intersections ( void *restrict  send_buffer,
size_t  send_size_asize,
size_t  send_size_entry,
int  tag,
MPI_Comm  comm,
int  rank_lim,
MPI_Request *restrict  requests,
const int  send_size[rank_lim][send_size_asize] 
)

Definition at line 86 of file xt_xmap_dist_dir_common.c.

Here is the caller graph for this function:

◆ xt_xmdd_cmp_isect_dst_rank()

int xt_xmdd_cmp_isect_dst_rank ( const void *  a_,
const void *  b_ 
)

Definition at line 272 of file xt_xmap_dist_dir_common.c.

Here is the caller graph for this function:

◆ xt_xmdd_cmp_isect_src_rank()

int xt_xmdd_cmp_isect_src_rank ( const void *  a_,
const void *  b_ 
)

Definition at line 264 of file xt_xmap_dist_dir_common.c.

Here is the caller graph for this function:

◆ xt_xmdd_free_dist_dir()

static void xt_xmdd_free_dist_dir ( struct dist_dir dist_dir)
static

Definition at line 69 of file xt_xmap_dist_dir_common.c.

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

◆ xt_xmdd_free_dist_dirs()

void xt_xmdd_free_dist_dirs ( struct dist_dir_pair  dist_dirs)

Definition at line 79 of file xt_xmap_dist_dir_common.c.

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