[mpich2-commits] r7520 - mpich2/trunk/test/mpi/perf
gropp at mcs.anl.gov
gropp at mcs.anl.gov
Mon Nov 29 13:18:55 CST 2010
Author: gropp
Date: 2010-11-29 13:18:54 -0600 (Mon, 29 Nov 2010)
New Revision: 7520
Modified:
mpich2/trunk/test/mpi/perf/timer.c
Log:
Make timer performance test more complete
Modified: mpich2/trunk/test/mpi/perf/timer.c
===================================================================
--- mpich2/trunk/test/mpi/perf/timer.c 2010-11-29 19:18:35 UTC (rev 7519)
+++ mpich2/trunk/test/mpi/perf/timer.c 2010-11-29 19:18:54 UTC (rev 7520)
@@ -4,23 +4,65 @@
* See COPYRIGHT in top-level directory.
*/
+/*
+ * Check that the timer produces monotone nondecreasing times and that
+ * the Tick is reasonable
+ */
+
#include "mpi.h"
#include <stdio.h>
+static int verbose = 0;
+
+#define MAX_TIMER_TEST 5000
+
int main(int argc, char* argv[])
{
- double t1, t2;
+ double t1[MAX_TIMER_TEST], tick[MAX_TIMER_TEST], tickval;
+ double minDiff, maxDiff, diff;
+ int i, nZeros = 0;
+ int nUnequalTick = 0;
int errs = 0;
MTest_Init(&argc,&argv);
- t1 = MPI_Wtime();
- usleep(500);
- t2 = MPI_Wtime();
+ for (i=0; i<MAX_TIMER_TEST; i++) {
+ t1[i] = MPI_Wtime();
+ }
- if (t1 == t2)
- errs++;
+ for (i=0; i<MAX_TIMER_TEST; i++) {
+ tick[i] = MPI_Wtick();
+ }
+ /* Look at the values */
+ /* Look at the tick */
+ tickval = MPI_Wtick();
+ for (i=0; i<MAX_TIMER_TEST; i++) {
+ if (tickval != tick[i]) {
+ fprintf( stderr, "Nonconstant value for MPI_Wtick: %e != %e\n",
+ tickval, tick[i] );
+ errs ++;
+ }
+ }
+
+ /* Look at the timer */
+ minDiff = 1.e20;
+ maxDiff = -1.0;
+ nZeros = 0;
+ for (i=1; i<MAX_TIMER_TEST; i++) {
+ diff = t1[i] - t1[i-1];
+ if (diff == 0.0) nZeros++;
+ else if (diff < minDiff) minDiff = diff;
+ if (diff > maxDiff) maxDiff = diff;
+ }
+
+ /* Are the time diff values and tick values consistent */
+ if (verbose) {
+ printf( "Tick = %e, timer range = [%e,%e]\n", tickval, minDiff,
+ maxDiff );
+ if (nZeros) printf( "Wtime difference was 0 %d times\n", nZeros );
+ }
+
MTest_Finalize(errs);
MPI_Finalize();
More information about the mpich2-commits
mailing list