msgQ test: Separate timed loops from printfs. Paranoia.
authorRamprasad Venkataraman <ramv@illinois.edu>
Tue, 28 Aug 2012 00:03:00 +0000 (19:03 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Tue, 28 Aug 2012 00:03:00 +0000 (19:03 -0500)
tests/charm++/queue/msgqtest.C
tests/charm++/queue/pgm.C

index 84826202c592128410ee619899c954cfa2f6b2d9..a5558632c4e21b60fc77d15726815f5dc08ea178 100644 (file)
@@ -183,6 +183,19 @@ double timePerOp_stlQ(int qBaseSize = 256)
 
 bool perftest_general_ififo()
 {
+  std::vector<double> timings;
+  timings.reserve(256);
+  // Charm applications typically have a small/moderate number of different message priorities
+  for (int hl = 16; hl <= 128; hl *=2)
+  {
+    std::srand(42);
+    for (int i = 0; i < qSizeMax + numMsgs; i++)
+      prios[i] = std::rand() % hl;
+
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
+      timings.push_back( timePerOp_stlQ(i) );
+  }
+
   #if CMK_HAS_STD_UNORDERED_MAP
   CkPrintf("The STL variant of the msg q is using a std::unordered_map\n");
   #else
@@ -198,16 +211,11 @@ bool perftest_general_ififo()
   for (int i = qSizeMin; i <= qSizeMax; i*=2)
     CkPrintf("%10d", i);
 
-  // Charm applications typically have a small/moderate number of different message priorities
-  for (int hl = 16; hl <= 128; hl *=2)
+  for (int hl = 16, j=0; hl <= 128; hl *=2)
   {
-    std::srand(42);
-    for (int i = 0; i < qSizeMax + numMsgs; i++)
-      prios[i] = std::rand() % hl;
-
     CkPrintf("\n    stl %7d", hl);
-    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
-      CkPrintf("%10.4f", timePerOp_stlQ(i));
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2, j++)
+      CkPrintf("%10.4f", timings[j]);
   }
 
   CkPrintf("\n");
index ff5cac89842c372adea82a9d87f375a7e06afaf7..7d8d86cd236909d31a3c1d959b0c0cdd9fa3d4e8 100644 (file)
@@ -212,6 +212,19 @@ double timePerOp_general_ififo(int qBaseSize = 256)
 
 bool perftest_general_ififo()
 {
+  std::vector<double> timings;
+  timings.reserve(256);
+  // Charm applications typically have a small/moderate number of different message priorities
+  for (int hl = 16; hl <= 128; hl *=2)
+  {
+    std::srand(42);
+    for (int i = 0; i < qSizeMax + numMsgs; i++)
+      prios[i] = std::rand() % hl;
+
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
+      timings.push_back( timePerOp_general_ififo(i) );
+  }
+
   CkPrintf("Reporting time per enqueue / dequeue operation (us) for charm's underlying mixed priority queue\n"
            "Nprios (row) is the number of different priority values that are used.\n"
            "Qlen (col) is the base length of the queue on which the enq/deq operations are timed\n"
@@ -221,16 +234,11 @@ bool perftest_general_ififo()
   for (int i = qSizeMin; i <= qSizeMax; i*=2)
     CkPrintf("%10d", i);
 
-  // Charm applications typically have a small/moderate number of different message priorities
-  for (int hl = 16; hl <= 128; hl *=2)
+  for (int hl = 16, j=0; hl <= 128; hl *=2)
   {
-    std::srand(42);
-    for (int i = 0; i < qSizeMax + numMsgs; i++)
-      prios[i] = std::rand() % hl;
-
     CkPrintf("\n  charm %7d", hl);
-    for (int i = qSizeMin; i <= qSizeMax; i *= 2)
-      CkPrintf("%10.4f", timePerOp_general_ififo(i));
+    for (int i = qSizeMin; i <= qSizeMax; i *= 2, j++)
+      CkPrintf("%10.4f", timings[j]);
   }
 
   CkPrintf("\n");