|
Yet Another eXchange Tool
DO_NOT_EDIT_HERE
|
Implementation of uitlity functions for creation of distributed directories. More...
#include <string.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_idxstripes_internal.h"Go to the source code of this file.
Functions | |
| void | xt_xmdd_free_dist_dir (struct dist_dir *dist_dir) |
| Xt_idxlist | xt_xmap_dist_dir_get_bucket (const struct bucket_params *bucket_params, struct Xt_stripe **stripes_, size_t *stripes_array_size, int dist_dir_rank) |
| generates the buckets of the distributed directory More... | |
| 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)[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) |
| int | 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, void *buffer, int buf_size, int *position, 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) |
Implementation of uitlity functions for creation of distributed directories.
Definition in file xt_xmap_dist_dir_common.c.
|
static |
Definition at line 265 of file xt_xmap_dist_dir_common.c.
| int xt_com_list_rank_cmp | ( | const void * | a_, |
| const void * | b_ | ||
| ) |
Definition at line 345 of file xt_xmap_dist_dir_common.c.
| Xt_idxlist xt_xmap_dist_dir_get_bucket | ( | const struct bucket_params * | bucket_params, |
| struct Xt_stripe ** | stripes_, | ||
| size_t * | stripes_array_size, | ||
| int | dist_dir_rank | ||
| ) |
generates the buckets of the distributed directory
The buckets of the distributed directory are computed as follows:
| [in] | bucket_params | the parameters |
| [out] | stripes_ | pointer to pointer of array of the stripes describing the bucket for rank dist_dir_rank. Must point to a pointer allocated by malloc or related and will be resized if necessary. |
| [out] | stripes_array_size | number of stripes stored in stripes_ |
| [in] | dist_dir_rank | rank for which to compute bucket |
Definition at line 115 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 | ||
| ) |
Definition at line 195 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 353 of file xt_xmap_dist_dir_common.c.
| int 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, | ||
| void * | buffer, | ||
| int | buf_size, | ||
| int * | position, | ||
| MPI_Comm | comm | ||
| ) |
Definition at line 232 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 281 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[send_size_asize] | ||
| ) |
Definition at line 170 of file xt_xmap_dist_dir_common.c.
| int xt_xmdd_cmp_isect_dst_rank | ( | const void * | a_, |
| const void * | b_ | ||
| ) |
Definition at line 337 of file xt_xmap_dist_dir_common.c.
| int xt_xmdd_cmp_isect_src_rank | ( | const void * | a_, |
| const void * | b_ | ||
| ) |
Definition at line 329 of file xt_xmap_dist_dir_common.c.
| void xt_xmdd_free_dist_dir | ( | struct dist_dir * | dist_dir | ) |
Definition at line 65 of file xt_xmap_dist_dir_common.c.
1.8.13