#include <stdio.h> #include <string.h> #include "mpi.h" int main(int argc, char *argv[]) { int provided, lcount, err, pidx, isContinuous; double qtimestart, qtime; MPI_T_enum enumtype; MPI_Datatype datatype; MPI_T_pvar_session session; MPI_T_pvar_handle handle; MPI_Init_thread(0, 0, MPI_THREAD_SINGLE, &provided); err = MPI_T_init_thread(MPI_THREAD_SINGLE, &provided); if (err) MPI_Abort(MPI_COMM_WORLD, 0); err = MPI_T_pvar_get_index("time_matching_unexpectedq", MPI_T_PVAR_CLASS_TIMER, &pidx); if (err != MPI_SUCCESS) MPI_Abort(MPI_COMM_WORLD, 0); /* Determine whether we need to start the variable. MPI 3.1 allows us to pass NULL for any return parameter that we ignore. */ err = MPI_T_pvar_get_info(pidx, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &isContinuous, NULL); err = MPI_T_pvar_session_create(&session); err = MPI_T_pvar_handle_alloc(session, pidx, NULL, &handle, &lcount); err = MPI_T_pvar_read(session, handle, &qtimestart); if (!isContinuous) err = MPI_T_pvar_start(session, handle); TestProgram(); if (!isContinuous) err = MPI_T_pvar_stop(session, handle); err = MPI_T_pvar_read(session, handle, &qtime); printf("Time searching unexpected queue = %e\n", qtime-qtimestart); /* No test on return from here on because we're about to exit */ MPI_T_pvar_handle_free(session, &handle); MPI_T_pvar_session_free(&session); MPI_T_finalize(); MPI_Finalize(); return 0; }