// this struct is here to handle the problem of non-contignous data
// for each such structure these function should be implemented (vector
// index hvector hindex struct)
typedef struct s_smpi_subtype{
void (*serialize)(const void * input, void *output, size_t count, void* subtype);
void (*unserialize)(const void * input, void *output, size_t count, void* subtype);
// this struct is here to handle the problem of non-contignous data
// for each such structure these function should be implemented (vector
// index hvector hindex struct)
typedef struct s_smpi_subtype{
void (*serialize)(const void * input, void *output, size_t count, void* subtype);
void (*unserialize)(const void * input, void *output, size_t count, void* subtype);
//*****************************************************************************************
typedef struct s_smpi_mpi_request {
//*****************************************************************************************
typedef struct s_smpi_mpi_request {
int smpi_datatype_struct(int count, int* blocklens, MPI_Aint* indices,
MPI_Datatype* old_types, MPI_Datatype* new_type);
int smpi_datatype_struct(int count, int* blocklens, MPI_Aint* indices,
MPI_Datatype* old_types, MPI_Datatype* new_type);
-void smpi_datatype_create(MPI_Datatype* new_type, int size, int has_subtype, void *struct_type, int flags);
+void smpi_datatype_create(MPI_Datatype* new_type, int size,int realsize, int has_subtype, void *struct_type, int flags);
-void unserialize_vector( const void *contiguous_vector,
- void *noncontiguous_vector,
- size_t count,
- void *type);
-
-void serialize_vector( const void *noncontiguous_vector,
- void *contiguous_vector,
- size_t count,
- void *type);
-
-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);
-
-
void smpi_empty_status(MPI_Status * status);
MPI_Op smpi_op_new(MPI_User_function * function, int commute);
void smpi_op_destroy(MPI_Op op);
void smpi_empty_status(MPI_Status * status);
MPI_Op smpi_op_new(MPI_User_function * function, int commute);
void smpi_op_destroy(MPI_Op op);