#include <xbt/function_types.h>
#define MPI_CALL(type,name,args) \
- type name args; \
+ type name args __attribute__((weak)); \
type P##name args
SG_BEGIN_DECL()
#define MPI_THREAD_MULTIPLE 3
//FIXME: check values
#define MPI_MAX_PROCESSOR_NAME 100
+#define MPI_MAX_NAME_STRING 100
#define MPI_MAX_ERROR_STRING 100
#define MPI_MAX_DATAREP_STRIN 100
#define MPI_MAX_INFO_KEY 100
MPI_CALL(XBT_PUBLIC(int), MPI_Comm_rank, (MPI_Comm comm, int *rank));
MPI_CALL(XBT_PUBLIC(int), MPI_Comm_size, (MPI_Comm comm, int *size));
+MPI_CALL(XBT_PUBLIC(int), MPI_Comm_get_name, (MPI_Comm comm, char* name, int* len));
MPI_CALL(XBT_PUBLIC(int), MPI_Get_processor_name, (char *name, int *resultlen));
MPI_CALL(XBT_PUBLIC(int), MPI_Get_count,
(MPI_Status * status, MPI_Datatype datatype,
XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv, struct timezone *tz);
-XBT_PUBLIC(void) smpi_sample_1(int global, const char *file, int line,
- int max);
+XBT_PUBLIC(int) smpi_sample_1(int global, const char *file, int line,
+ int iters, double threshold);
XBT_PUBLIC(int) smpi_sample_2(int global, const char *file, int line);
XBT_PUBLIC(void) smpi_sample_3(int global, const char *file, int line);
XBT_PUBLIC(void) smpi_sample_flops(double flops);
-#define SMPI_SAMPLE_LOCAL(num) for(smpi_sample_1(0, __FILE__, __LINE__, num); \
- smpi_sample_2(0, __FILE__, __LINE__); \
- smpi_sample_3(0, __FILE__, __LINE__))
+#define SMPI_SAMPLE_LOCAL(iters,thres) for(smpi_sample_1(0, __FILE__, __LINE__, iters, thres); \
+ smpi_sample_2(0, __FILE__, __LINE__); \
+ smpi_sample_3(0, __FILE__, __LINE__))
-#define SMPI_SAMPLE_GLOBAL(num) for(smpi_sample_1(1, __FILE__, __LINE__, num); \
- smpi_sample_2(1, __FILE__, __LINE__); \
- smpi_sample_3(1, __FILE__, __LINE__))
+#define SMPI_SAMPLE_GLOBAL(iters,thres) for(smpi_sample_1(1, __FILE__, __LINE__, iters, thres); \
+ smpi_sample_2(1, __FILE__, __LINE__); \
+ smpi_sample_3(1, __FILE__, __LINE__))
#define SMPI_SAMPLE_DELAY(flops) for(smpi_sample_flops(flops); 0; )
/* Fortran specific stuff */
XBT_PUBLIC(int) MAIN__(void);
+XBT_PUBLIC(int) smpi_process_index(void);
+
SG_END_DECL()
#endif