Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'mc'
[simgrid.git] / include / smpi / smpi.h
index 788e001..b990c4b 100644 (file)
@@ -100,24 +100,6 @@ SG_BEGIN_DECL()
 #define MPI_CXX_DOUBLE_COMPLEX MPI_DATATYPE_NULL
 #define MPI_CXX_LONG_DOUBLE_COMPLEX MPI_DATATYPE_NULL
 
-#define MPI_REAL4 MPI_DATATYPE_NULL
-#define MPI_REAL8 MPI_DATATYPE_NULL
-#define MPI_REAL16 MPI_DATATYPE_NULL
-#define MPI_COMPLEX8 MPI_DATATYPE_NULL
-#define MPI_COMPLEX16 MPI_DATATYPE_NULL
-#define MPI_COMPLEX32 MPI_DATATYPE_NULL
-#define MPI_INTEGER1 MPI_DATATYPE_NULL
-#define MPI_INTEGER2 MPI_DATATYPE_NULL
-#define MPI_INTEGER4 MPI_DATATYPE_NULL
-#define MPI_INTEGER8 MPI_DATATYPE_NULL
-#define MPI_COMPLEX MPI_DATATYPE_NULL
-#define MPI_DOUBLE_COMPLEX MPI_DATATYPE_NULL
-#define MPI_2DOUBLE_PRECISION MPI_DATATYPE_NULL
-#define MPI_REAL MPI_DATATYPE_NULL
-#define MPI_LOGICAL MPI_DATATYPE_NULL
-#define MPI_DOUBLE_PRECISION MPI_DATATYPE_NULL
-#define MPI_INTEGER MPI_DATATYPE_NULL
-
 #define MPI_DISTRIBUTE_BLOCK 0
 #define MPI_DISTRIBUTE_NONE 1
 #define MPI_DISTRIBUTE_CYCLIC 2
@@ -222,7 +204,7 @@ XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT16_T;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT32_T;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT64_T;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT8_T;
-#define MPI_BYTE MPI_UINT8_T
+XBT_PUBLIC_DATA( MPI_Datatype ) MPI_BYTE;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT16_T;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT32_T;
 XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT64_T;
@@ -243,10 +225,48 @@ XBT_PUBLIC_DATA(MPI_Datatype) MPI_2INT;
 XBT_PUBLIC_DATA(MPI_Datatype) MPI_LONG_DOUBLE_INT;
 XBT_PUBLIC_DATA(MPI_Datatype) MPI_2FLOAT;
 XBT_PUBLIC_DATA(MPI_Datatype) MPI_2DOUBLE;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_2LONG;//only for compatibility with Fortran
+
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL4;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL8;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL16;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX8;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX16;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX32;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER1;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER2;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER4;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER8;
+XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER16;
+
 //for now we only send int values at max
 #define MPI_Count int
 #define MPI_COUNT MPI_INT
 
+//defines for fortran compatibility
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+  #define MPI_INTEGER MPI_INT
+  #define MPI_2INTEGER MPI_2INT
+  #define MPI_LOGICAL MPI_INT
+#else
+  #define MPI_INTEGER MPI_LONG
+  #define MPI_2INTEGER MPI_2LONG
+  #define MPI_LOGICAL MPI_LONG
+#endif
+
+#define MPI_COMPLEX MPI_C_FLOAT_COMPLEX
+#define MPI_DOUBLE_COMPLEX MPI_C_DOUBLE_COMPLEX
+#define MPI_LOGICAL1 MPI_UINT8_T
+#define MPI_LOGICAL2 MPI_UINT16_T
+#define MPI_LOGICAL4 MPI_UINT32_T
+#define MPI_LOGICAL8 MPI_UINT64_T
+#define MPI_2REAL MPI_2FLOAT
+#define MPI_CHARACTER MPI_CHAR
+#define MPI_DOUBLE_PRECISION MPI_DOUBLE
+#define MPI_2DOUBLE_PRECISION MPI_2DOUBLE
+
+
+
 typedef void MPI_User_function(void *invec, void *inoutvec, int *len,
                                MPI_Datatype * datatype);
 struct s_smpi_mpi_op;
@@ -548,9 +568,9 @@ MPI_CALL(XBT_PUBLIC(int), MPI_Reduce_local,(void *inbuf, void *inoutbuf, int cou
     MPI_Datatype datatype, MPI_Op op));
 
 MPI_CALL(XBT_PUBLIC(int), MPI_Win_free,( MPI_Win* win));
-
 MPI_CALL(XBT_PUBLIC(int), MPI_Win_create,( void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win));
-
+MPI_CALL(XBT_PUBLIC(int), MPI_Win_set_name,(MPI_Win  win, char * name));
+MPI_CALL(XBT_PUBLIC(int), MPI_Win_get_name,(MPI_Win  win, char * name, int* len));
 MPI_CALL(XBT_PUBLIC(int), MPI_Win_fence,( int assert,  MPI_Win win));
 
 MPI_CALL(XBT_PUBLIC(int), MPI_Get,( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank,