#include <assert.h>
#include <stdlib.h>
#include <mpi.h>
#include "core/ppm_xfuncs.h"
#include "xt/xt_mpi.h"
#include "xt_mpi_internal.h"
#include "xt_mpi_ddt_cache.h"
#include "xt_mpi_stripe_parse_func.h"
Go to the source code of this file.
|
static MPI_Datatype | xt_mpi_generate_compact_datatype_block (const int *disp, const int *blocklengths, int count, MPI_Datatype old_type, MPI_Comm comm) |
|
static MPI_Datatype | xt_mpi_generate_compact_datatype (int const *disp, int disp_len, MPI_Datatype old_type, MPI_Comm comm) |
|
MPI_Datatype | xt_mpi_generate_datatype_block (const int *displacements, const int *blocklengths, int count, MPI_Datatype old_type, MPI_Comm comm) |
|
MPI_Datatype | xt_mpi_generate_datatype (int const *displacements, int count, MPI_Datatype old_type, MPI_Comm comm) |
|
static int | XtMPI_Type_create_hindexed_block (int count, int blocklength, const MPI_Aint array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype) |
|
MPI_Datatype | xt_mpi_ddt_block_gen (int count, const int *disp, const int *blocklengths, struct Xt_mpi_strp_prs_params *params) |
|
◆ COMPACT_DT
COMPACT_DT enables the analysis of displacements in order to give a more compact description to the datatype generators of MPI. For strong enough MPI implementations this not required. Then you can undefine COMPACT_DT and save some processing time within yaxt without losing communication performance.
Definition at line 64 of file xt_mpi_ddt_gen.c.
◆ MPI_Type_create_hindexed_block
◆ XT_MPI_STRP_PRS_AOFS_TYPE [1/2]
#define XT_MPI_STRP_PRS_AOFS_TYPE int |
◆ XT_MPI_STRP_PRS_AOFS_TYPE [2/2]
#define XT_MPI_STRP_PRS_AOFS_TYPE MPI_Aint |
◆ XT_MPI_STRP_PRS_BLOCK_VEC_CREATE [1/2]
◆ XT_MPI_STRP_PRS_BLOCK_VEC_CREATE [2/2]
◆ XT_MPI_STRP_PRS_DISP_ADJUST [1/2]
#define XT_MPI_STRP_PRS_DISP_ADJUST |
( |
| val | ) |
((val) * params->old_type_extent) |
◆ XT_MPI_STRP_PRS_DISP_ADJUST [2/2]
#define XT_MPI_STRP_PRS_DISP_ADJUST |
( |
| val | ) |
(val) |
◆ XT_MPI_STRP_PRS_INDEXED_BLOCK_CREATE [1/2]
◆ XT_MPI_STRP_PRS_INDEXED_BLOCK_CREATE [2/2]
◆ XT_MPI_STRP_PRS_INDEXED_CREATE [1/2]
◆ XT_MPI_STRP_PRS_INDEXED_CREATE [2/2]
◆ XT_MPI_STRP_PRS_PREFIX [1/2]
#define XT_MPI_STRP_PRS_PREFIX |
◆ XT_MPI_STRP_PRS_PREFIX [2/2]
#define XT_MPI_STRP_PRS_PREFIX a |
◆ XT_MPI_STRP_PRS_UNITSTRIDE [1/2]
#define XT_MPI_STRP_PRS_UNITSTRIDE 1 |
◆ XT_MPI_STRP_PRS_UNITSTRIDE [2/2]
#define XT_MPI_STRP_PRS_UNITSTRIDE params->old_type_extent |
◆ xt_mpi_ddt_block_gen()
MPI_Datatype xt_mpi_ddt_block_gen |
( |
int | count, |
|
|
const int * | disp, |
|
|
const int * | blocklengths, |
|
|
struct Xt_mpi_strp_prs_params * | params ) |
◆ xt_mpi_generate_compact_datatype()
MPI_Datatype xt_mpi_generate_compact_datatype |
( |
int const * | disp, |
|
|
int | disp_len, |
|
|
MPI_Datatype | old_type, |
|
|
MPI_Comm | comm ) |
|
static |
◆ xt_mpi_generate_compact_datatype_block()
static MPI_Datatype xt_mpi_generate_compact_datatype_block |
( |
const int * | disp, |
|
|
const int * | blocklengths, |
|
|
int | count, |
|
|
MPI_Datatype | old_type, |
|
|
MPI_Comm | comm ) |
|
static |
◆ xt_mpi_generate_datatype()
MPI_Datatype xt_mpi_generate_datatype |
( |
int const * | displacements, |
|
|
int | count, |
|
|
MPI_Datatype | old_type, |
|
|
MPI_Comm | comm ) |
generates an MPI datatype
- Parameters
-
[in] | displacements | array of displacements |
[in] | count | number of elements |
[in] | old_type | base MPI datatype of all elements |
[in] | comm | MPI communicator |
- Returns
- MPI datatype for the given data layout
Definition at line 245 of file xt_mpi_ddt_gen.c.
◆ xt_mpi_generate_datatype_block()
MPI_Datatype xt_mpi_generate_datatype_block |
( |
const int * | displacements, |
|
|
const int * | blocklengths, |
|
|
int | count, |
|
|
MPI_Datatype | old_type, |
|
|
MPI_Comm | comm ) |
generates an MPI datatype
- Parameters
-
[in] | displacements | array of displacements |
[in] | blocklengths | array of block sizes |
[in] | count | number of blocks |
[in] | old_type | base MPI datatype of all elements |
[in] | comm | MPI communicator |
- Returns
- MPI datatype for the given data layout
Definition at line 209 of file xt_mpi_ddt_gen.c.
◆ XtMPI_Type_create_hindexed_block()
static int XtMPI_Type_create_hindexed_block |
( |
int | count, |
|
|
int | blocklength, |
|
|
const MPI_Aint | array_of_displacements[], |
|
|
MPI_Datatype | oldtype, |
|
|
MPI_Datatype * | newtype ) |
|
inlinestatic |