Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Attempt to fix problems with complex datatype copy in smpi
[simgrid.git] / src / smpi / smpi_mpi_dt_private.h
index 89fcd65..656754d 100644 (file)
@@ -42,42 +42,44 @@ extern MPI_Datatype MPI_PTR;
 
 typedef struct s_smpi_mpi_vector{
   s_smpi_subtype_t base;
+  MPI_Datatype old_type;
+  size_t size_oldtype;
   size_t block_stride;
   size_t block_length;
   size_t block_count;
-  MPI_Datatype old_type;
-  size_t size_oldtype;
 } s_smpi_mpi_vector_t;
 
 typedef struct s_smpi_mpi_hvector{
   s_smpi_subtype_t base;
+  MPI_Datatype old_type;
+  size_t size_oldtype;
   MPI_Aint block_stride;
   size_t block_length;
   size_t block_count;
-  MPI_Datatype old_type;
-  size_t size_oldtype;
 } s_smpi_mpi_hvector_t;
 
 typedef struct s_smpi_mpi_indexed{
   s_smpi_subtype_t base;
+  MPI_Datatype old_type;
+  size_t size_oldtype;
   int* block_lengths;
   int* block_indices;
   size_t block_count;
-  MPI_Datatype old_type;
-  size_t size_oldtype;
 } s_smpi_mpi_indexed_t;
 
 typedef struct s_smpi_mpi_hindexed{
   s_smpi_subtype_t base;
+  MPI_Datatype old_type;
+  size_t size_oldtype;
   int* block_lengths;
   MPI_Aint* block_indices;
   size_t block_count;
-  MPI_Datatype old_type;
-  size_t size_oldtype;
 } s_smpi_mpi_hindexed_t;
 
 typedef struct s_smpi_mpi_struct{
   s_smpi_subtype_t base;
+  MPI_Datatype old_type;
+  size_t size_oldtype;
   int* block_lengths;
   MPI_Aint* block_indices;
   size_t block_count;
@@ -99,6 +101,8 @@ void serialize_vector( const void *noncontiguous_vector,
                        size_t count,
                        void *type);
 
+void free_vector(MPI_Datatype* type);
+
 s_smpi_mpi_vector_t* smpi_datatype_vector_create( int block_stride,
                                                   int block_length,
                                                   int block_count,
@@ -115,6 +119,8 @@ void serialize_hvector( const void *noncontiguous_vector,
                        size_t count,
                        void *type);
 
+void free_hvector(MPI_Datatype* type);
+
 s_smpi_mpi_hvector_t* smpi_datatype_hvector_create( MPI_Aint block_stride,
                                                   int block_length,
                                                   int block_count,
@@ -132,6 +138,8 @@ void serialize_indexed( const void *noncontiguous_vector,
                        size_t count,
                        void *type);
 
+void free_indexed(MPI_Datatype* type);
+
 s_smpi_mpi_indexed_t* smpi_datatype_indexed_create(int* block_lengths,
                                                   int* block_indices,
                                                   int block_count,
@@ -148,6 +156,8 @@ void serialize_hindexed( const void *noncontiguous_vector,
                        size_t count,
                        void *type);
 
+void free_hindexed(MPI_Datatype* type);
+
 s_smpi_mpi_hindexed_t* smpi_datatype_hindexed_create(int* block_lengths,
                                                   MPI_Aint* block_indices,
                                                   int block_count,
@@ -164,6 +174,8 @@ void serialize_struct( const void *noncontiguous_vector,
                        size_t count,
                        void *type);
 
+void free_struct(MPI_Datatype* type);
+
 s_smpi_mpi_struct_t* smpi_datatype_struct_create(int* block_lengths,
                                                   MPI_Aint* block_indices,
                                                   int block_count,