[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