1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
* Copyright 1997, Regents of the University of Minnesota
*
* timer.c
*
* This file contain various timing routines
*
* Started 10/19/96
* George
*
* $Id: timer.c 10052 2011-06-01 22:29:57Z karypis $
*
*/
#include <parmetislib.h>
/*************************************************************************
* This function initializes the various timers
**************************************************************************/
void InitTimers(ctrl_t *ctrl)
{
cleartimer(ctrl->TotalTmr);
cleartimer(ctrl->InitPartTmr);
cleartimer(ctrl->MatchTmr);
cleartimer(ctrl->ContractTmr);
cleartimer(ctrl->CoarsenTmr);
cleartimer(ctrl->RefTmr);
cleartimer(ctrl->SetupTmr);
cleartimer(ctrl->ProjectTmr);
cleartimer(ctrl->KWayInitTmr);
cleartimer(ctrl->KWayTmr);
cleartimer(ctrl->MoveTmr);
cleartimer(ctrl->RemapTmr);
cleartimer(ctrl->SerialTmr);
cleartimer(ctrl->AuxTmr1);
cleartimer(ctrl->AuxTmr2);
cleartimer(ctrl->AuxTmr3);
cleartimer(ctrl->AuxTmr4);
cleartimer(ctrl->AuxTmr5);
cleartimer(ctrl->AuxTmr6);
}
/*************************************************************************
* This function prints timing information about KMETIS
**************************************************************************/
void PrintTimingInfo(ctrl_t *ctrl)
{
/* PrintTimer(ctrl, ctrl->CoarsenTmr, " Coarsening"); */
PrintTimer(ctrl, ctrl->SetupTmr, " Setup");
PrintTimer(ctrl, ctrl->MatchTmr, " Matching");
PrintTimer(ctrl, ctrl->ContractTmr, "Contraction");
PrintTimer(ctrl, ctrl->InitPartTmr, " InitPart");
/* PrintTimer(ctrl, ctrl->RefTmr, " Refinement"); */
PrintTimer(ctrl, ctrl->ProjectTmr, " Project");
PrintTimer(ctrl, ctrl->KWayInitTmr, " Initialize");
PrintTimer(ctrl, ctrl->KWayTmr, " K-way");
PrintTimer(ctrl, ctrl->SerialTmr, " Serial");
PrintTimer(ctrl, ctrl->MoveTmr, " Move");
PrintTimer(ctrl, ctrl->RemapTmr, " Remap");
PrintTimer(ctrl, ctrl->TotalTmr, " Total");
PrintTimer(ctrl, ctrl->AuxTmr1, " Aux1");
PrintTimer(ctrl, ctrl->AuxTmr2, " Aux2");
PrintTimer(ctrl, ctrl->AuxTmr3, " Aux3");
PrintTimer(ctrl, ctrl->AuxTmr4, " Aux4");
PrintTimer(ctrl, ctrl->AuxTmr5, " Aux5");
PrintTimer(ctrl, ctrl->AuxTmr6, " Aux6");
}
/*************************************************************************
* This function prints timer stat
**************************************************************************/
void PrintTimer(ctrl_t *ctrl, timer tmr, char *msg)
{
double sum, max, tsec;
tsec = gettimer(tmr);
gkMPI_Reduce((void *)&tsec, (void *)&sum, 1, MPI_DOUBLE, MPI_SUM, 0, ctrl->comm);
tsec = gettimer(tmr);
gkMPI_Reduce((void *)&tsec, (void *)&max, 1, MPI_DOUBLE, MPI_MAX, 0, ctrl->comm);
if (ctrl->mype == 0 && sum != 0.0)
printf("%s: Max: %7.3"PRREAL", Sum: %7.3"PRREAL", Balance: %7.3"PRREAL"\n",
msg, (real_t)max, (real_t)sum, (real_t)(max*ctrl->npes/sum));
}
|