SimGrid  3.13
Versatile Simulation of Distributed Systems
smpi_mpi_dt_private.h File Reference
#include <xbt/base.h>
#include "private.h"

Classes

struct  s_smpi_mpi_contiguous
 
struct  s_smpi_mpi_vector
 
struct  s_smpi_mpi_hvector
 
struct  s_smpi_mpi_indexed
 
struct  s_smpi_mpi_hindexed
 
struct  s_smpi_mpi_struct
 

Macros

#define DT_FLAG_DESTROYED   0x0001
 user destroyed but some other layers still have a reference More...
 
#define DT_FLAG_COMMITED   0x0002
 ready to be used for a send/recv operation More...
 
#define DT_FLAG_CONTIGUOUS   0x0004
 contiguous datatype More...
 
#define DT_FLAG_OVERLAP   0x0008
 datatype is unpropper for a recv operation More...
 
#define DT_FLAG_USER_LB   0x0010
 has a user defined LB More...
 
#define DT_FLAG_USER_UB   0x0020
 has a user defined UB More...
 
#define DT_FLAG_PREDEFINED   0x0040
 cannot be removed: initial and predefined datatypes More...
 
#define DT_FLAG_NO_GAPS   0x0080
 no gaps around the datatype More...
 
#define DT_FLAG_DATA   0x0100
 data or control structure More...
 
#define DT_FLAG_ONE_SIDED   0x0200
 datatype can be used for one sided operations More...
 
#define DT_FLAG_UNAVAILABLE   0x0400
 datatypes unavailable on the build (OS or compiler dependant) More...
 
#define DT_FLAG_VECTOR   0x0800
 valid only for loops. More...
 
#define DT_FLAG_BASIC   (DT_FLAG_PREDEFINED | DT_FLAG_CONTIGUOUS | DT_FLAG_NO_GAPS | DT_FLAG_DATA | DT_FLAG_COMMITED)
 

Typedefs

typedef struct s_smpi_mpi_contiguous s_smpi_mpi_contiguous_t
 
typedef struct s_smpi_mpi_vector s_smpi_mpi_vector_t
 
typedef struct s_smpi_mpi_hvector s_smpi_mpi_hvector_t
 
typedef struct s_smpi_mpi_indexed s_smpi_mpi_indexed_t
 
typedef struct s_smpi_mpi_hindexed s_smpi_mpi_hindexed_t
 
typedef struct s_smpi_mpi_struct s_smpi_mpi_struct_t
 

Functions

XBT_PRIVATE void unserialize_contiguous (const void *contiguous_vector, void *noncontiguous_vector, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_contiguous (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_contiguous (MPI_Datatype *type)
 
XBT_PRIVATE void use_contiguous (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_contiguous_tsmpi_datatype_contiguous_create (MPI_Aint lb, int block_count, MPI_Datatype old_type, int size_oldtype)
 
XBT_PRIVATE void unserialize_vector (const void *contiguous_vector, void *noncontiguous_vector, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_vector (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_vector (MPI_Datatype *type)
 
XBT_PRIVATE void use_vector (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_vector_tsmpi_datatype_vector_create (int block_stride, int block_length, int block_count, MPI_Datatype old_type, int size_oldtype)
 
XBT_PRIVATE void unserialize_hvector (const void *contiguous_vector, void *noncontiguous_vector, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_hvector (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_hvector (MPI_Datatype *type)
 
XBT_PRIVATE void use_hvector (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_hvector_tsmpi_datatype_hvector_create (MPI_Aint block_stride, int block_length, int block_count, MPI_Datatype old_type, int size_oldtype)
 
XBT_PRIVATE void unserialize_indexed (const void *contiguous_indexed, void *noncontiguous_indexed, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_indexed (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_indexed (MPI_Datatype *type)
 
XBT_PRIVATE void use_indexed (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_indexed_tsmpi_datatype_indexed_create (int *block_lengths, int *block_indices, int block_count, MPI_Datatype old_type, int size_oldtype)
 
XBT_PRIVATE void unserialize_hindexed (const void *contiguous_indexed, void *noncontiguous_indexed, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_hindexed (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_hindexed (MPI_Datatype *type)
 
XBT_PRIVATE void use_hindexed (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_hindexed_tsmpi_datatype_hindexed_create (int *block_lengths, MPI_Aint *block_indices, int block_count, MPI_Datatype old_type, int size_oldtype)
 
XBT_PRIVATE void unserialize_struct (const void *contiguous_indexed, void *noncontiguous_indexed, int count, void *type, MPI_Op op)
 
XBT_PRIVATE void serialize_struct (const void *noncontiguous_vector, void *contiguous_vector, int count, void *type)
 
XBT_PRIVATE void free_struct (MPI_Datatype *type)
 
XBT_PRIVATE void use_struct (MPI_Datatype *type)
 
XBT_PRIVATE s_smpi_mpi_struct_tsmpi_datatype_struct_create (int *block_lengths, MPI_Aint *block_indices, int block_count, MPI_Datatype *old_types)
 

Variables

const MPI_Datatype MPI_PTR
 

Macro Definition Documentation

#define DT_FLAG_DESTROYED   0x0001

user destroyed but some other layers still have a reference

#define DT_FLAG_COMMITED   0x0002

ready to be used for a send/recv operation

#define DT_FLAG_CONTIGUOUS   0x0004

contiguous datatype

#define DT_FLAG_OVERLAP   0x0008

datatype is unpropper for a recv operation

#define DT_FLAG_USER_LB   0x0010

has a user defined LB

#define DT_FLAG_USER_UB   0x0020

has a user defined UB

#define DT_FLAG_PREDEFINED   0x0040

cannot be removed: initial and predefined datatypes

#define DT_FLAG_NO_GAPS   0x0080

no gaps around the datatype

#define DT_FLAG_DATA   0x0100

data or control structure

#define DT_FLAG_ONE_SIDED   0x0200

datatype can be used for one sided operations

#define DT_FLAG_UNAVAILABLE   0x0400

datatypes unavailable on the build (OS or compiler dependant)

#define DT_FLAG_VECTOR   0x0800

valid only for loops.

The loop contain only one element < without extent. It correspond to the vector type.

Typedef Documentation

Function Documentation

XBT_PRIVATE void unserialize_contiguous ( const void contiguous_vector,
void noncontiguous_vector,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_contiguous ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_contiguous ( MPI_Datatype *  type)
XBT_PRIVATE void use_contiguous ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_contiguous_t* smpi_datatype_contiguous_create ( MPI_Aint  lb,
int  block_count,
MPI_Datatype  old_type,
int  size_oldtype 
)
XBT_PRIVATE void unserialize_vector ( const void contiguous_vector,
void noncontiguous_vector,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_vector ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_vector ( MPI_Datatype *  type)
XBT_PRIVATE void use_vector ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_vector_t* smpi_datatype_vector_create ( int  block_stride,
int  block_length,
int  block_count,
MPI_Datatype  old_type,
int  size_oldtype 
)
XBT_PRIVATE void unserialize_hvector ( const void contiguous_vector,
void noncontiguous_vector,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_hvector ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_hvector ( MPI_Datatype *  type)
XBT_PRIVATE void use_hvector ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_hvector_t* smpi_datatype_hvector_create ( MPI_Aint  block_stride,
int  block_length,
int  block_count,
MPI_Datatype  old_type,
int  size_oldtype 
)
XBT_PRIVATE void unserialize_indexed ( const void contiguous_indexed,
void noncontiguous_indexed,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_indexed ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_indexed ( MPI_Datatype *  type)
XBT_PRIVATE void use_indexed ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_indexed_t* smpi_datatype_indexed_create ( int *  block_lengths,
int *  block_indices,
int  block_count,
MPI_Datatype  old_type,
int  size_oldtype 
)
XBT_PRIVATE void unserialize_hindexed ( const void contiguous_indexed,
void noncontiguous_indexed,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_hindexed ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_hindexed ( MPI_Datatype *  type)
XBT_PRIVATE void use_hindexed ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_hindexed_t* smpi_datatype_hindexed_create ( int *  block_lengths,
MPI_Aint *  block_indices,
int  block_count,
MPI_Datatype  old_type,
int  size_oldtype 
)
XBT_PRIVATE void unserialize_struct ( const void contiguous_indexed,
void noncontiguous_indexed,
int  count,
void type,
MPI_Op  op 
)
XBT_PRIVATE void serialize_struct ( const void noncontiguous_vector,
void contiguous_vector,
int  count,
void type 
)
XBT_PRIVATE void free_struct ( MPI_Datatype *  type)
XBT_PRIVATE void use_struct ( MPI_Datatype *  type)
XBT_PRIVATE s_smpi_mpi_struct_t* smpi_datatype_struct_create ( int *  block_lengths,
MPI_Aint *  block_indices,
int  block_count,
MPI_Datatype *  old_types 
)

Variable Documentation

const MPI_Datatype MPI_PTR