X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fce65f194ca0bb025602ff52929597c76a99bbfb..4f377cfbcae89e70585c675eb978c7c8a33dd773:/include/smpi/smpi.h diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index 7a2ea0d770..e3b4b1c3d3 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -12,8 +12,6 @@ #include #include -#define sleep(x) smpi_sleep(x) -#define gettimeofday(x, y) smpi_gettimeofday(x, y) #ifdef _WIN32 #define MPI_CALL(type,name,args) \ @@ -94,49 +92,49 @@ typedef struct { #define MPI_STATUSES_IGNORE NULL #define MPI_DATATYPE_NULL NULL -XBT_PUBLIC( MPI_Datatype ) MPI_CHAR; -XBT_PUBLIC( MPI_Datatype ) MPI_SHORT; -XBT_PUBLIC( MPI_Datatype ) MPI_INT; -XBT_PUBLIC( MPI_Datatype ) MPI_LONG; -XBT_PUBLIC( MPI_Datatype ) MPI_LONG_LONG; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_CHAR; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_SHORT; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG_LONG; #define MPI_LONG_LONG_INT MPI_LONG_LONG -XBT_PUBLIC( MPI_Datatype ) MPI_SIGNED_CHAR; -XBT_PUBLIC( MPI_Datatype ) MPI_UNSIGNED_CHAR; -XBT_PUBLIC( MPI_Datatype ) MPI_UNSIGNED_SHORT; -XBT_PUBLIC( MPI_Datatype ) MPI_UNSIGNED; -XBT_PUBLIC( MPI_Datatype ) MPI_UNSIGNED_LONG; -XBT_PUBLIC( MPI_Datatype ) MPI_UNSIGNED_LONG_LONG; -XBT_PUBLIC( MPI_Datatype ) MPI_FLOAT; -XBT_PUBLIC( MPI_Datatype ) MPI_DOUBLE; -XBT_PUBLIC( MPI_Datatype ) MPI_LONG_DOUBLE; -XBT_PUBLIC( MPI_Datatype ) MPI_WCHAR; -XBT_PUBLIC( MPI_Datatype ) MPI_C_BOOL; -XBT_PUBLIC( MPI_Datatype ) MPI_INT8_T; -XBT_PUBLIC( MPI_Datatype ) MPI_INT16_T; -XBT_PUBLIC( MPI_Datatype ) MPI_INT32_T; -XBT_PUBLIC( MPI_Datatype ) MPI_INT64_T; -XBT_PUBLIC( MPI_Datatype ) MPI_UINT8_T; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_SIGNED_CHAR; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_CHAR; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_SHORT; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_LONG; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_LONG_LONG; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_FLOAT; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_DOUBLE; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG_DOUBLE; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_WCHAR; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_BOOL; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT8_T; +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( MPI_Datatype ) MPI_UINT16_T; -XBT_PUBLIC( MPI_Datatype ) MPI_UINT32_T; -XBT_PUBLIC( MPI_Datatype ) MPI_UINT64_T; -XBT_PUBLIC( MPI_Datatype ) MPI_C_FLOAT_COMPLEX; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT16_T; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT32_T; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT64_T; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_FLOAT_COMPLEX; #define MPI_C_COMPLEX MPI_C_FLOAT_COMPLEX -XBT_PUBLIC( MPI_Datatype ) MPI_C_DOUBLE_COMPLEX; -XBT_PUBLIC( MPI_Datatype ) MPI_C_LONG_DOUBLE_COMPLEX; -XBT_PUBLIC( MPI_Datatype ) MPI_AINT; -XBT_PUBLIC( MPI_Datatype ) MPI_OFFSET; -XBT_PUBLIC( MPI_Datatype ) MPI_LB; -XBT_PUBLIC( MPI_Datatype ) MPI_UB; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_DOUBLE_COMPLEX; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_LONG_DOUBLE_COMPLEX; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_AINT; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_OFFSET; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LB; +XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UB; //The following are datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC. -extern MPI_Datatype MPI_FLOAT_INT; -extern MPI_Datatype MPI_LONG_INT; -extern MPI_Datatype MPI_DOUBLE_INT; -extern MPI_Datatype MPI_SHORT_INT; -extern MPI_Datatype MPI_2INT; -extern MPI_Datatype MPI_LONG_DOUBLE_INT; -XBT_PUBLIC(MPI_Datatype) MPI_2FLOAT; -XBT_PUBLIC(MPI_Datatype) MPI_2DOUBLE; +XBT_PUBLIC_DATA(MPI_Datatype) MPI_FLOAT_INT; +XBT_PUBLIC_DATA(MPI_Datatype) MPI_LONG_INT; +XBT_PUBLIC_DATA(MPI_Datatype) MPI_DOUBLE_INT; +XBT_PUBLIC_DATA(MPI_Datatype) MPI_SHORT_INT; +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; typedef void MPI_User_function(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype); @@ -144,31 +142,31 @@ struct s_smpi_mpi_op; typedef struct s_smpi_mpi_op *MPI_Op; #define MPI_OP_NULL NULL -XBT_PUBLIC( MPI_Op ) MPI_MAX; -XBT_PUBLIC( MPI_Op ) MPI_MIN; -XBT_PUBLIC( MPI_Op ) MPI_MAXLOC; -XBT_PUBLIC( MPI_Op ) MPI_MINLOC; -XBT_PUBLIC( MPI_Op ) MPI_SUM; -XBT_PUBLIC( MPI_Op ) MPI_PROD; -XBT_PUBLIC( MPI_Op ) MPI_LAND; -XBT_PUBLIC( MPI_Op ) MPI_LOR; -XBT_PUBLIC( MPI_Op ) MPI_LXOR; -XBT_PUBLIC( MPI_Op ) MPI_BAND; -XBT_PUBLIC( MPI_Op ) MPI_BOR; -XBT_PUBLIC( MPI_Op ) MPI_BXOR; +XBT_PUBLIC_DATA( MPI_Op ) MPI_MAX; +XBT_PUBLIC_DATA( MPI_Op ) MPI_MIN; +XBT_PUBLIC_DATA( MPI_Op ) MPI_MAXLOC; +XBT_PUBLIC_DATA( MPI_Op ) MPI_MINLOC; +XBT_PUBLIC_DATA( MPI_Op ) MPI_SUM; +XBT_PUBLIC_DATA( MPI_Op ) MPI_PROD; +XBT_PUBLIC_DATA( MPI_Op ) MPI_LAND; +XBT_PUBLIC_DATA( MPI_Op ) MPI_LOR; +XBT_PUBLIC_DATA( MPI_Op ) MPI_LXOR; +XBT_PUBLIC_DATA( MPI_Op ) MPI_BAND; +XBT_PUBLIC_DATA( MPI_Op ) MPI_BOR; +XBT_PUBLIC_DATA( MPI_Op ) MPI_BXOR; struct s_smpi_mpi_group; typedef struct s_smpi_mpi_group *MPI_Group; #define MPI_GROUP_NULL NULL -XBT_PUBLIC( MPI_Group ) MPI_GROUP_EMPTY; +XBT_PUBLIC_DATA( MPI_Group ) MPI_GROUP_EMPTY; struct s_smpi_mpi_communicator; typedef struct s_smpi_mpi_communicator *MPI_Comm; #define MPI_COMM_NULL NULL -XBT_PUBLIC( MPI_Comm ) MPI_COMM_WORLD; +XBT_PUBLIC_DATA( MPI_Comm ) MPI_COMM_WORLD; #define MPI_COMM_SELF smpi_process_comm_self() struct s_smpi_mpi_request; @@ -403,15 +401,17 @@ MPI_CALL(XBT_PUBLIC(int), MPI_Probe, //FIXME: these are not yet implemented typedef void MPI_Handler_function(MPI_Comm*, int*, ...); +typedef int MPI_Win; +typedef int MPI_Info; typedef void* MPI_Errhandler; typedef int MPI_Copy_function(MPI_Comm oldcomm, int keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, int* flag); typedef int MPI_Delete_function(MPI_Comm comm, int keyval, void* attribute_val, void* extra_state); -XBT_PUBLIC(MPI_Datatype) MPI_PACKED; -XBT_PUBLIC(MPI_Errhandler*) MPI_ERRORS_RETURN; -XBT_PUBLIC(MPI_Errhandler*) MPI_ERRORS_ARE_FATAL; -XBT_PUBLIC(MPI_Errhandler*) MPI_ERRHANDLER_NULL; +XBT_PUBLIC_DATA(MPI_Datatype) MPI_PACKED; +XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRORS_RETURN; +XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRORS_ARE_FATAL; +XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRHANDLER_NULL; MPI_CALL(XBT_PUBLIC(int), MPI_Pack_size, (int incount, MPI_Datatype datatype, MPI_Comm comm, int* size)); @@ -466,6 +466,14 @@ MPI_CALL(XBT_PUBLIC(int), MPI_Get_elements, (MPI_Status* status, MPI_Datatype da MPI_CALL(XBT_PUBLIC(int), MPI_Dims_create, (int nnodes, int ndims, int* dims)); MPI_CALL(XBT_PUBLIC(int), MPI_Initialized, (int* flag)); MPI_CALL(XBT_PUBLIC(int), MPI_Pcontrol, (const int level )); +MPI_CALL(XBT_PUBLIC(int), MPI_Win_fence,( int assert, MPI_Win win)); +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_Info_create,( MPI_Info *info)); +MPI_CALL(XBT_PUBLIC(int), MPI_Info_set,( MPI_Info *info, char *key, char *value)); +MPI_CALL(XBT_PUBLIC(int), MPI_Info_free,( MPI_Info *info)); +MPI_CALL(XBT_PUBLIC(int), MPI_Get,( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, + MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win)); //FIXME: End of all the not yet implemented stuff @@ -476,7 +484,7 @@ XBT_PUBLIC(void) smpi_exit(int); */ XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs); -XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv, struct timezone *tz); +XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv); XBT_PUBLIC(unsigned long long) smpi_rastro_resolution (void); XBT_PUBLIC(unsigned long long) smpi_rastro_timestamp (void); XBT_PUBLIC(void) smpi_sample_1(int global, const char *file, int line, @@ -510,8 +518,10 @@ XBT_PUBLIC(void*) smpi_shared_set_call(const char* func, const char* input, void : smpi_shared_set_call(#func, input, func(__VA_ARGS__))) /* Fortran specific stuff */ -XBT_PUBLIC(int) __attribute__((weak)) smpi_simulated_main(int argc, char** argv); -XBT_PUBLIC(int) MAIN__(int (*realmain) (int argc, char *argv[]),int argc, char *argv[]); +XBT_PUBLIC(int) __attribute__((weak)) smpi_simulated_main__(int argc, char** argv); +XBT_PUBLIC(int) __attribute__((weak)) MAIN__(void); +XBT_PUBLIC(int) smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[]); +XBT_PUBLIC(void) __attribute__((weak)) user_main__(void); XBT_PUBLIC(int) smpi_process_index(void);