Implementation of default bucket generator for the creation of distributed directories.
More...
Go to the source code of this file.
|
static int | xt_xmdd_bucket_gen_cycl_stripe_init (void *gen_state_, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, Xt_config config, struct Xt_xmdd_bucket_gen_comms *comms, void *init_params) |
|
static struct Xt_com_list | xt_xmdd_cycl_stripe_get_next_bucket (void *gen_state_, int type) |
|
static void | xt_xmdd_bucket_gen_cycl_stripe_destroy (void *gen_state) |
|
static int | xt_xmdd_bucket_gen_cycl_stripe_get_intersect_max_num (void *gen_state, int type) |
|
static Xt_int | get_intracomm_dist_dir_global_interval_size (Xt_idxlist src, Xt_idxlist dst, bool *stripify, MPI_Comm comm, int comm_size, Xt_config config) |
|
static Xt_int | get_min_idxlist_index (Xt_idxlist a, Xt_idxlist b) |
|
static Xt_int | get_max_idxlist_index (Xt_idxlist a, Xt_idxlist b) |
|
static struct bucket_params | get_intracomm_bucket_params (Xt_int global_interval, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, int comm_size) |
|
static void | get_intercomm_dist_dir_global_interval_size (Xt_idxlist src, Xt_idxlist dst, bool *stripify, Xt_int interval_size[2], struct Xt_xmdd_bucket_gen_comms *comms, int comm_size, int remote_size, Xt_config config) |
|
static Xt_int | get_intercomm_min_idxlist_index (Xt_idxlist l) |
|
static Xt_int | get_intercomm_max_idxlist_index (Xt_idxlist l) |
|
static struct bucket_params | get_intercomm_bucket_params (Xt_idxlist idxlist, Xt_int global_interval, int comm_size) |
|
static Xt_idxlist | xt_xmap_dist_dir_get_bucket (struct Xt_xmdd_bucket_gen_cycl_stripe_state *gen_state, struct bucket_params *bucket_params, int dist_dir_rank) |
| generates the buckets of the distributed directory
|
|
◆ get_intercomm_bucket_params()
◆ get_intercomm_dist_dir_global_interval_size()
◆ get_intercomm_max_idxlist_index()
◆ get_intercomm_min_idxlist_index()
◆ get_intracomm_bucket_params()
◆ get_intracomm_dist_dir_global_interval_size()
◆ get_max_idxlist_index()
◆ get_min_idxlist_index()
◆ xt_xmap_dist_dir_get_bucket()
generates the buckets of the distributed directory
The buckets of the distributed directory are computed as follows:
- compute sum of the sizes of all src_idxlist's and round to next multiple of comm_size -> global_interval
- local_interval_size = global_interval / comm_size
- local_interval_start = rank * local_interval_size
- local_interval_end = (rank + 1) * local_interval_size
- local_interval = $[local_interval_start,local_interval_end)$
- bucket of each rank is the set of stripes that is defined as: stripe[i].start = start + rank*local_interval_start + i*global_interval stripe[i].stride = 1; stripe[i].nstrides = (int)local_interval; with i in [0,num_stripes) bucket[rank] = xt_idxstripes_new(stripes, num_stripes);
- num_stripes and start are choosen such that: start + local_interval > get_min_idxlist_index(src_idxlist, dst_idxlist) (which implies for rank 0 stripe[0].start <= get_min_idxlist_index(src_idxlist, dst_idxlist)) where start = global_interval * k, k is minimal and start + num_stripes*global_interval > get_max_idxlist_index(src_idxlist, dst_idxlist); i.e. local_interval is replicated modulo global_interval for the whole range of indices.
\
- Parameters
-
[in] | bucket_params | the parameters |
[in,out] | gen_state | bucket generator state |
[in] | dist_dir_rank | rank for which to compute bucket |
- Returns
- newly created bucket and corresponding rank. The bucket must not be used after either the next call to xt_xmap_dist_dir_get_bucket or xt_xmdd_bucket_gen_cycl_stripe_destroy for the same gen_state.
Definition at line 401 of file xt_xmap_dist_dir_bucket_gen_cycl_stripe.c.
◆ xt_xmdd_bucket_gen_cycl_stripe_destroy()
static void xt_xmdd_bucket_gen_cycl_stripe_destroy |
( |
void * | gen_state | ) |
|
|
static |
◆ xt_xmdd_bucket_gen_cycl_stripe_get_intersect_max_num()
static int xt_xmdd_bucket_gen_cycl_stripe_get_intersect_max_num |
( |
void * | gen_state, |
|
|
int | type ) |
|
static |
◆ xt_xmdd_bucket_gen_cycl_stripe_init()
◆ xt_xmdd_cycl_stripe_get_next_bucket()
static struct Xt_com_list xt_xmdd_cycl_stripe_get_next_bucket |
( |
void * | gen_state_, |
|
|
int | type ) |
|
static |
◆ Xt_xmdd_cycl_stripe_bucket_gen_desc
Initial value:= { .init
}
static void xt_xmdd_bucket_gen_cycl_stripe_destroy(void *gen_state)
static int xt_xmdd_bucket_gen_cycl_stripe_init(void *gen_state_, Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, Xt_config config, struct Xt_xmdd_bucket_gen_comms *comms, void *init_params)
static int xt_xmdd_bucket_gen_cycl_stripe_get_intersect_max_num(void *gen_state, int type)
static struct Xt_com_list xt_xmdd_cycl_stripe_get_next_bucket(void *gen_state_, int type)
int(* Xt_xmdd_bucket_gen_init_state_internal)(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_ *gen)
This is the default implementation
- Examples
- test_exchanger_parallel.c.
Definition at line 90 of file xt_xmap_dist_dir_bucket_gen_cycl_stripe.c.