Yet Another eXchange Tool 0.11.1
|
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"
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) |
Implementation of utility functions for creation of distributed directories.
Definition in file xt_xmap_dist_dir_common.c.
|
static |
Definition at line 206 of file xt_xmap_dist_dir_common.c.
int xt_com_list_rank_cmp | ( | const void * | a_, |
const void * | b_ | ||
) |
Definition at line 280 of file xt_xmap_dist_dir_common.c.
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.
[in] | src_idxlist | source index list |
[in] | dst_idxlist | destination index list |
[in] | comm | MPI communicator that contains all processes that take part in the exchange (xt_xmap_dist_dir_new will make its own copy of comm) |
[in] | config | Object holding non-default configuration settings for the ensuing operations. |
Definition at line 296 of file xt_xmap_dist_dir_common.c.
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.
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.
[in] | src_idxlist | source index list |
[in] | dst_idxlist | destination index list |
[in] | comm | MPI 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.
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.
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.
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.
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.
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.
|
static |
Definition at line 69 of file xt_xmap_dist_dir_common.c.
void xt_xmdd_free_dist_dirs | ( | struct dist_dir_pair | dist_dirs | ) |
Definition at line 79 of file xt_xmap_dist_dir_common.c.