00001 #ifndef MPIB_COLL_BENCHMARKS_H_
00002 #define MPIB_COLL_BENCHMARKS_H_
00003
00004 #include "mpib_measurement.h"
00005
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00077 typedef struct MPIB_coll_container {
00079 const char* operation;
00081 int (*initialize)(void* _this, MPI_Comm comm, int root, int M);
00083 int (*execute)(void* _this, MPI_Comm comm, int root, int M);
00085 int (*finalize)(void* _this, MPI_Comm comm, int root);
00086 } MPIB_coll_container;
00087
00098 typedef int (*MPIB_measure_coll)(MPIB_coll_container* container, MPI_Comm comm, int root,
00099 int M, MPIB_precision precision, MPIB_result* result);
00100
00113 typedef void (*MPIB_measure_coll_msgset)(MPIB_coll_container* container, MPI_Comm comm, int root,
00114 MPIB_msgset msgset, MPIB_precision precision, int* count, MPIB_result** results);
00115
00124 int MPIB_measure_max(MPIB_coll_container* container, MPI_Comm comm, int root,
00125 int M, MPIB_precision precision, MPIB_result* result);
00126 int MPIB_measure_max_msgset(MPIB_coll_container* container, MPI_Comm comm, int root,
00127 MPIB_msgset msgset, MPIB_precision precision, int* count, MPIB_result** results);
00128
00136 void MPIB_root_timer_init(MPI_Comm comm, int reps);
00137
00150 int MPIB_measure_root(MPIB_coll_container* container, MPI_Comm comm, int root,
00151 int M, MPIB_precision precision, MPIB_result* result);
00152 int MPIB_measure_root_msgset(MPIB_coll_container* container, MPI_Comm comm, int root,
00153 MPIB_msgset msgset, MPIB_precision precision, int* count, MPIB_result** results);
00154
00168 void MPIB_global_timer_init(MPI_Comm comm, int parallel, int reps);
00169
00183 int MPIB_measure_global(MPIB_coll_container* container, MPI_Comm comm, int root,
00184 int M, MPIB_precision precision, MPIB_result* result);
00185 int MPIB_measure_global_msgset(MPIB_coll_container* container, MPI_Comm comm, int root,
00186 MPIB_msgset msgset, MPIB_precision precision, int* count, MPIB_result** results);
00187
00188
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00196 #endif