Yet Another eXchange Tool  0.9.0
Classes | Functions
xt_redist_p2p.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <mpi.h>
#include "xt/xt_mpi.h"
#include "xt_mpi_internal.h"
#include "xt/xt_redist_p2p.h"
#include "xt_redist_internal.h"
#include "xt/xt_redist_single_array_base.h"
#include "xt/xt_xmap.h"
#include "xt/xt_idxlist.h"
#include "core/ppm_xfuncs.h"
#include "core/core.h"
#include "xt_config_internal.h"
#include "xt_arithmetic_util.h"
Include dependency graph for xt_redist_p2p.c:

Go to the source code of this file.

Classes

struct  ext_disp
 

Functions

static MPI_Datatype generate_datatype (const int *transfer_pos, int num_transfer_pos, const int *offsets, MPI_Datatype base_datatype, MPI_Comm comm)
 
static void generate_msg_infos (int num_msgs, Xt_xmap_iter iter, const int *offsets, MPI_Datatype base_datatype, struct Xt_redist_msg *msgs, MPI_Comm comm)
 
Xt_redist xt_redist_p2p_off_new (Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype)
 
Xt_redist xt_redist_p2p_off_custom_new (Xt_xmap xmap, const int *src_offsets, const int *dst_offsets, MPI_Datatype datatype, Xt_config config)
 
static struct ext_disp pos2disp (int pos, int num_ext, const struct Xt_offset_ext extents[], const int psum_ext_size[])
 
static struct ext_disp pos2disp2 (int pos, int num_ext, const struct Xt_offset_ext extents[], const int psum_ext_size[], int start_ext)
 
static MPI_Datatype generate_ext_datatype (int num_transfer_pos_ext, const struct Xt_pos_ext transfer_pos_ext[], int num_ext, const struct Xt_offset_ext extents[], const int psum_ext_size[], MPI_Datatype base_datatype, MPI_Comm comm)
 
static void generate_ext_msg_infos (int num_msgs, Xt_xmap_iter iter, int num_ext, const struct Xt_offset_ext extents[], MPI_Datatype base_datatype, struct Xt_redist_msg *msgs, MPI_Comm comm)
 
Xt_redist xt_redist_p2p_ext_new (Xt_xmap xmap, int num_src_ext, const struct Xt_offset_ext src_extents[], int num_dst_ext, const struct Xt_offset_ext dst_extents[], MPI_Datatype datatype)
 
Xt_redist xt_redist_p2p_ext_custom_new (Xt_xmap xmap, int num_src_ext, const struct Xt_offset_ext src_extents[], int num_dst_ext, const struct Xt_offset_ext dst_extents[], MPI_Datatype datatype, Xt_config config)
 
static void aux_gen_simple_block_offsets (int block_offsets[], const int block_sizes[], size_t num_blocks)
 
static MPI_Datatype generate_block_datatype (const int *transfer_pos, int num_transfer_pos, const int *block_offsets, const int *block_sizes, MPI_Datatype base_datatype, MPI_Comm comm)
 
static void generate_block_msg_infos (int num_msgs, Xt_xmap_iter iter, const int *block_offsets, const int *block_sizes, int **aux_offsets, size_t num_blocks, MPI_Datatype base_datatype, struct Xt_redist_msg **msgs, MPI_Comm comm)
 
Xt_redist xt_redist_p2p_blocks_off_new (Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
 
Xt_redist xt_redist_p2p_blocks_off_custom_new (Xt_xmap xmap, const int *src_block_offsets, const int *src_block_sizes, int src_block_num, const int *dst_block_offsets, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
 
Xt_redist xt_redist_p2p_blocks_new (Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype)
 
Xt_redist xt_redist_p2p_blocks_custom_new (Xt_xmap xmap, const int *src_block_sizes, int src_block_num, const int *dst_block_sizes, int dst_block_num, MPI_Datatype datatype, Xt_config config)
 
Xt_redist xt_redist_p2p_new (Xt_xmap xmap, MPI_Datatype datatype)
 
Xt_redist xt_redist_p2p_custom_new (Xt_xmap xmap, MPI_Datatype datatype, Xt_config config)
 

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

Function Documentation

◆ aux_gen_simple_block_offsets()

static void aux_gen_simple_block_offsets ( int  block_offsets[],
const int  block_sizes[],
size_t  num_blocks 
)
inlinestatic

Definition at line 370 of file xt_redist_p2p.c.

Here is the caller graph for this function:

◆ generate_block_datatype()

static MPI_Datatype generate_block_datatype ( const int *  transfer_pos,
int  num_transfer_pos,
const int *  block_offsets,
const int *  block_sizes,
MPI_Datatype  base_datatype,
MPI_Comm  comm 
)
static

Definition at line 383 of file xt_redist_p2p.c.

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

◆ generate_block_msg_infos()

static void generate_block_msg_infos ( int  num_msgs,
Xt_xmap_iter  iter,
const int *  block_offsets,
const int *  block_sizes,
int **  aux_offsets,
size_t  num_blocks,
MPI_Datatype  base_datatype,
struct Xt_redist_msg **  msgs,
MPI_Comm  comm 
)
static

Definition at line 408 of file xt_redist_p2p.c.

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

◆ generate_datatype()

static MPI_Datatype generate_datatype ( const int *  transfer_pos,
int  num_transfer_pos,
const int *  offsets,
MPI_Datatype  base_datatype,
MPI_Comm  comm 
)
static

Definition at line 70 of file xt_redist_p2p.c.

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

◆ generate_ext_datatype()

static MPI_Datatype generate_ext_datatype ( int  num_transfer_pos_ext,
const struct Xt_pos_ext  transfer_pos_ext[],
int  num_ext,
const struct Xt_offset_ext  extents[],
const int  psum_ext_size[],
MPI_Datatype  base_datatype,
MPI_Comm  comm 
)
static

Definition at line 203 of file xt_redist_p2p.c.

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

◆ generate_ext_msg_infos()

static void generate_ext_msg_infos ( int  num_msgs,
Xt_xmap_iter  iter,
int  num_ext,
const struct Xt_offset_ext  extents[],
MPI_Datatype  base_datatype,
struct Xt_redist_msg msgs,
MPI_Comm  comm 
)
static

Definition at line 279 of file xt_redist_p2p.c.

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

◆ generate_msg_infos()

static void generate_msg_infos ( int  num_msgs,
Xt_xmap_iter  iter,
const int *  offsets,
MPI_Datatype  base_datatype,
struct Xt_redist_msg msgs,
MPI_Comm  comm 
)
static

Definition at line 98 of file xt_redist_p2p.c.

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

◆ pos2disp()

static struct ext_disp pos2disp ( int  pos,
int  num_ext,
const struct Xt_offset_ext  extents[],
const int  psum_ext_size[] 
)
inlinestatic

Definition at line 129 of file xt_redist_p2p.c.

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

◆ pos2disp2()

static struct ext_disp pos2disp2 ( int  pos,
int  num_ext,
const struct Xt_offset_ext  extents[],
const int  psum_ext_size[],
int  start_ext 
)
inlinestatic

Definition at line 129 of file xt_redist_p2p.c.

Here is the caller graph for this function:

◆ xt_redist_p2p_blocks_custom_new()

Xt_redist xt_redist_p2p_blocks_custom_new ( Xt_xmap  xmap,
const int *  src_block_sizes,
int  src_block_num,
const int *  dst_block_sizes,
int  dst_block_num,
MPI_Datatype  datatype,
Xt_config  config 
)

constructor for a redistribution using point to point communication for the exchange, special case: blocks without explicit offsets

Parameters
[in]xmapexchange map
[in]src_block_sizessource block lengths in unit of elements
[in]src_block_numnumber of src blocks
[in]dst_block_sizesdestination block lengths in unit of elements
[in]dst_block_numnumber of dst blocks
[in]datatypeMPI datatype of a single element in data space, all elements have the same
[in]configconfiguration object for custom settings
Remarks
calls xt_redist_p2p_blocks_off_new with NULL offsets

Definition at line 540 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_blocks_new()

Xt_redist xt_redist_p2p_blocks_new ( Xt_xmap  xmap,
const int *  src_block_sizes,
int  src_block_num,
const int *  dst_block_sizes,
int  dst_block_num,
MPI_Datatype  datatype 
)

constructor for a redistribution using point to point communication for the exchange, special case: blocks without explicit offsets

Parameters
[in]xmapexchange map
[in]src_block_sizessource block lengths in unit of elements
[in]src_block_numnumber of src blocks
[in]dst_block_sizesdestination block lengths in unit of elements
[in]dst_block_numnumber of dst blocks
[in]datatypeMPI datatype of a single element in data space, all elements have the same
Remarks
calls xt_redist_p2p_blocks_off_new with NULL offsets

Definition at line 527 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_blocks_off_custom_new()

Xt_redist xt_redist_p2p_blocks_off_custom_new ( Xt_xmap  xmap,
const int *  src_block_offsets,
const int *  src_block_sizes,
int  src_block_num,
const int *  dst_block_offsets,
const int *  dst_block_sizes,
int  dst_block_num,
MPI_Datatype  datatype,
Xt_config  config 
)

constructor for a redistribution using point to point communication for the exchange, special case: elements (which correspond to each idxlist element) are blocks of variable length with corresponding offsets, therefore src_block_num and dst_block_num must match the lengths of the src/dst index lists used for the construction of xmap. Uses custom settings.

Parameters
[in]xmapexchange map
[in]src_block_offsetsarray containing for all source index space positions of xmap the offsets for blocks in data space
[in]src_block_sizessource block lengths in unit of elements
[in]src_block_numnumber of src blocks
[in]dst_block_offsetsarray containing for all destination index space positions of xmap the offsets for blocks in data space
[in]dst_block_sizesdestination block lengths in unit of elements
[in]dst_block_numnumber of dst blocks
[in]datatypeMPI datatype of a single element in data space, all elements have the same
[in]configconfiguration object for custom settings
Remarks
NULL offsets arguments mean: use zero based prefix sum of block sizes as effective offsets

Definition at line 462 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_blocks_off_new()

Xt_redist xt_redist_p2p_blocks_off_new ( Xt_xmap  xmap,
const int *  src_block_offsets,
const int *  src_block_sizes,
int  src_block_num,
const int *  dst_block_offsets,
const int *  dst_block_sizes,
int  dst_block_num,
MPI_Datatype  datatype 
)

constructor for a redistribution using point to point communication for the exchange, special case: elements (which correspond to each idxlist element) are blocks of variable length with corresponding offsets, therefore src_block_num and dst_block_num must match the lengths of the src/dst index lists used for the construction of xmap

Parameters
[in]xmapexchange map
[in]src_block_offsetsarray containing for all source index space positions of xmap the offsets for blocks in data space
[in]src_block_sizessource block lengths in unit of elements
[in]src_block_numnumber of src blocks
[in]dst_block_offsetsarray containing for all destination index space positions of xmap the offsets for blocks in data space
[in]dst_block_sizesdestination block lengths in unit of elements
[in]dst_block_numnumber of dst blocks
[in]datatypeMPI datatype of a single element in data space, all elements have the same
Remarks
NULL offsets arguments mean: use zero based prefix sum of block sizes as effective offsets

Definition at line 446 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_custom_new()

Xt_redist xt_redist_p2p_custom_new ( Xt_xmap  xmap,
MPI_Datatype  datatype,
Xt_config  config 
)

constructor for a redistribution using point to point communication for the exchange. Uses custom settings.

Parameters
[in]xmapexchange map
[in]datatypeMPI datatype of single element in the data to be exchanged
[in]configconfiguration object for custom settings

Definition at line 559 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_ext_custom_new()

Xt_redist xt_redist_p2p_ext_custom_new ( Xt_xmap  xmap,
int  num_src_ext,
const struct Xt_offset_ext  src_extents[],
int  num_dst_ext,
const struct Xt_offset_ext  dst_extents[],
MPI_Datatype  datatype,
Xt_config  config 
)

constructor for a redistribution using point to point communication for the exchange. Uses custom settings.

Parameters
[in]xmapexchange map
[in]num_src_extnumber of source extents
[in]src_extentsarray of extents describing offsets for every element of the index lists composing the xmap, i.e. { 10, 5, 1 } denotes 5 offsets, namely 10, 11, 12, 13, 14
[in]num_dst_extnumber of destination extents
[in]dst_extentsarray of extents analogous to src_extents
[in]datatypeMPI datatype of single element in the data to be exchanged
[in]configconfiguration object for custom settings

Definition at line 330 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_ext_new()

Xt_redist xt_redist_p2p_ext_new ( Xt_xmap  xmap,
int  num_src_ext,
const struct Xt_offset_ext  src_extents[],
int  num_dst_ext,
const struct Xt_offset_ext  dst_extents[],
MPI_Datatype  datatype 
)

constructor for a redistribution using point to point communication for the exchange. Uses default settings.

Parameters
[in]xmapexchange map
[in]num_src_extnumber of source extents
[in]src_extentsarray of extents describing offsets for every element of the index lists composing the xmap, i.e. { 10, 5, 1 } denotes 5 offsets, namely 10, 11, 12, 13, 14
[in]num_dst_extnumber of destination extents
[in]dst_extentsarray of extents analogous to src_extents
[in]datatypeMPI datatype of single element in the data to be exchanged

Definition at line 317 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_new()

Xt_redist xt_redist_p2p_new ( Xt_xmap  xmap,
MPI_Datatype  datatype 
)

constructor for a redistribution using point to point communication for the exchange. Uses default settings.

Parameters
[in]xmapexchange map
[in]datatypeMPI datatype of single element in the data to be exchanged

Definition at line 552 of file xt_redist_p2p.c.

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

◆ xt_redist_p2p_off_custom_new()

Xt_redist xt_redist_p2p_off_custom_new ( Xt_xmap  xmap,
const int *  src_offsets,
const int *  dst_offsets,
MPI_Datatype  datatype,
Xt_config  config 
)

constructor for a redistribution using point to point communication for the exchange. Uses custom settings.

Parameters
[in]xmapexchange map
[in]src_offsetsarray containing for all elements in the source index list passed to the exchange map the position of the respective element in the input array passed to the exchange routine
[in]dst_offsetsarray containing for all elements in the destination index list passed to the exchange map the position of the respective element in the output array passed to the exchange routine
[in]datatypeMPI datatype of single element in the data to be exchanged
[in]configconfiguration object for custom settings

Definition at line 129 of file xt_redist_p2p.c.

Here is the caller graph for this function:

◆ xt_redist_p2p_off_new()

Xt_redist xt_redist_p2p_off_new ( Xt_xmap  xmap,
const int *  src_offsets,
const int *  dst_offsets,
MPI_Datatype  datatype 
)

constructor for a redistribution using point to point communication for the exchange. Uses default settings.

Parameters
[in]xmapexchange map
[in]src_offsetsarray containing for all elements in the source index list passed to the exchange map the position of the respective element in the input array passed to the exchange routine
[in]dst_offsetsarray containing for all elements in the destination index list passed to the exchange map the position of the respective element in the output array passed to the exchange routine
[in]datatypeMPI datatype of single element in the data to be exchanged

Definition at line 121 of file xt_redist_p2p.c.

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