updated for bigsim
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 4 Dec 2007 23:45:47 +0000 (23:45 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 4 Dec 2007 23:45:47 +0000 (23:45 +0000)
examples/bigsim/tools/rewritelog/traceBigSim/traceBigSim.C
examples/bigsim/tools/rewritelog/traceBigSim/traceBigSim.h

index 717499024d061f7d7c5c4a98bae335cc60bd4a6a..28de7383b73af29c01868187548c3f175dd0ad5b 100644 (file)
@@ -3,6 +3,23 @@
 #include <stdio.h>
 #include <stdarg.h>
 
+/*
+ *
+ * WITH_MAMBO:    when using mambo
+ * CMK_BLUEGENE_CHARM:  when build with bigsim
+ * SPLIT_APART_CYCLE_ACCURATE: parallelize Mambo run
+ * */
+
+#undef WITH_MAMBO 
+#undef SPLIT_APART_CYCLE_ACCURATE
+
+// MAMBO
+#if  WITH_MAMBO
+#include "mambo.h"
+static uint64_t start_time, end_time;
+#endif
+
+CkpvDeclare(FILE*, bgfp);     // for bigsim run
 
 //======================PAPI======================= 
 //#define BIG_SIM_PAPI
 #include <papi.h>
 #define NUM_PAPI_EVENTS 9
 #define BIGSIM_PAPI
-#endif
 
-
-FILE* bgfp;
-unsigned long bgTraceCounter;
 int errorcode; 
 int events[NUM_PAPI_EVENTS];
 long long values[NUM_PAPI_EVENTS]; 
 char errorstring[PAPI_MAX_STR_LEN+1]; 
+#endif
+
+unsigned long bgTraceCounter;
 double startTime;
 bool insideTraceBracket;
 
@@ -29,16 +45,17 @@ void initBigSimTrace()
   bgTraceCounter = 0;
   insideTraceBracket = false;
 
+  CkpvInitialize(FILE*, bgfp);
 #ifdef CMK_BLUEGENE_CHARM
   //   for bigsim emulation, write to files, one for each processor
   char fname[128];
   sprintf(fname, "param.%d", CkMyPe());
   CkpvAccess(bgfp) = fopen(fname, "w");
-  if ((bgfp) == NULL) 
+  if (CkpvAccess(bgfp) == NULL) 
     CmiAbort("Failed to generated trace param file!");
 #else
   //   for Mambo simulation, write to screen for now
-  (bgfp) = stdout;
+  CkpvAccess(bgfp) = stdout;
 #endif
 
 
@@ -52,7 +69,7 @@ void initBigSimTrace()
 void finalizeBigSimTrace()
 {
 #ifdef CMK_BLUEGENE_CHARM
-  fclose((bgfp));
+  fclose(CkpvAccess(bgfp));
 #endif  
 }
 
@@ -69,15 +86,15 @@ void startTraceBigSim(){
 #if SPLIT_APART_CYCLE_ACCURATE
   SimParameters *simParams = Node::Object()->simParameters;
   if(simParams->bgSplitNumProcs != -1 && simParams->bgSplitMyProc!=-1){
+       (bgTraceCounter) ++;
        if( ((bgTraceCounter) % simParams->bgSplitNumProcs) == simParams->bgSplitMyProc){
          // Do slow mambo simulation for this case!
-         CkPrintf("TRACEBIGSIM: Doing cycle accurate simulation for interesting event #%lu\n", (bgTraceCounter) );
+         //CkPrintf("TRACEBIGSIM: Doing cycle accurate simulation for interesting event #%lu\n", (bgTraceCounter) );
+         start_time = begin(); // for MAMBO
        }
-       (bgTraceCounter) ++;
   }
 #endif  
 
-       startTime = CmiWallTimer();
 
 #ifdef BIGSIM_PAPI
 
@@ -112,6 +129,16 @@ void startTraceBigSim(){
        CkAssert(PAPI_start_counters(events, NUM_PAPI_EVENTS) == PAPI_OK);
 
 #endif
+
+
+#ifdef CMK_BLUEGENE_CHARM
+  BgMark("startTraceBigSim %f\n");
+#endif
+
+#if WITH_MAMBO
+  //   startTime = CmiWallTimer();
+  start_time = begin(); // for MAMBO
+#endif
   
 }
   
@@ -119,6 +146,11 @@ void startTraceBigSim(){
 
 void endTraceBigSim_20param(char * eventname, int num_params, double p1 , double p2 , double p3 , double p4 , double p5 , double p6 , double p7 , double p8 , double p9 , double p10 , double p11 , double p12 , double p13 , double p14 , double p15 , double p16 , double p17 , double p18 , double p19 , double p20 ) {
 
+#if WITH_MAMBO
+    end_time=end();
+        //     double endTime = CmiWallTimer();
+#endif
+
     CkAssert((insideTraceBracket) == true);
     (insideTraceBracket) = false;
 
@@ -150,10 +182,10 @@ if(num_params==19) sprintf(params, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f
 if(num_params==20) sprintf(params, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20);
 
        char paramString[2048];
-       
        sprintf(paramString, "params:{ %s }", params);
        
-
+       char eventNameString[1024];
+       sprintf(eventNameString, "event:{ %s }", eventname);
  
 #ifdef BIGSIM_PAPI
         CkAssert(PAPI_stop_counters(values, NUM_PAPI_EVENTS) == PAPI_OK); 
@@ -169,12 +201,18 @@ if(num_params==20) sprintf(params, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f
 
         sprintf(perfCountString+strlen(perfCountString), " }");
        
-
 #endif
-       double endTime = CmiWallTimer();
+
  
   char timeString[256];
-  sprintf(timeString, "time:{ %f }", endTime-startTime);
+
+#if WITH_MAMBO
+  //  sprintf(timeString, "time:{ %f }", endTime-startTime);
+  sprintf(timeString, "time_in_cycles:{ %llu }",  end_time-start_time); 
+#endif
+#ifdef CMK_BLUEGENE_CHARM
+  timeString[0] = 0;
+#endif
 
 
 #if SPLIT_APART_CYCLE_ACCURATE
@@ -187,27 +225,19 @@ if(num_params==20) sprintf(params, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f
   }
 #endif
 
-
-
   char sequenceString[1024];
   sequenceString[0] = 0;
-#ifdef CMK_BLUEGENE_CHARM
-  sprintf();
 
-  BgPrint("endTraceBigSim %f\n");
+#ifdef CMK_BLUEGENE_CHARM
+  BgMark("endTraceBigSim %f\n");
   // write event ID
   int seqno = tTIMELINEREC.length()-1;
-  //  fprintf((bgfp),"%d ",seqno);
+  fprintf(CkpvAccess(bgfp),"%d ",seqno);
   sprintf(sequenceString, "seqno: { %d } ",seqno);
-
-#endif
-//  fprintf((bgfp),"%s\n",params);
-
-  
-#ifdef CMK_BLUEGENE_CHARM
-  printf((bgfp), "TRACEBIGSIM: event:{ %s } %s %s %s %s\n", eventname, sequenceString, timeString, perfCountString, paramString);
+//  fprintf(CkpvAccess(bgfp),"%s\n",params);
+  fprintf(CkpvAccess(bgfp), "TRACEBIGSIM: %s %s %s %s %s\n", eventNameString, sequenceString, timeString, perfCountString, paramString);
 #else
-  printf("TRACEBIGSIM: event:{ %s } %s %s %s %s\n", eventname, sequenceString, timeString, perfCountString, paramString);  
+  printf("TRACEBIGSIM: %s %s %s %s %s\n", eventNameString, sequenceString, timeString, perfCountString, paramString);
 #endif
 
 
index 6b10b3776fbb919c4cd96bbd98dec0a91e3227cf..2ec07eb938eb6ce4d17a80c2197d909748649f27 100644 (file)
@@ -12,7 +12,8 @@
 #endif
 
 
-extern FILE *bgfp;
+CkpvExtern(FILE *, bgfp);
+
 extern unsigned long bgTraceCounter;
 extern bool insideTraceBracket;
 
@@ -23,14 +24,14 @@ void finalizeBigSimTrace();
 void BgSetStartEvent();
 void startTraceBigSim();
 
-  
+
 
 /** 
        startTraceBigSim() begins tracing an event with a specified set of parameters. These are convenience
        aliases so that a user can easily add/remove parameters while testing their application.
        Up to 20 parameters can be specified. These just call through to startTraceBigSim_20param().
 */
-void endTraceBigSim( char * eventName );
+//void endTraceBigSim( char * eventName );
 void endTraceBigSim( char * eventName , double p1 );
 void endTraceBigSim( char * eventName , double p1 , double p2 );
 void endTraceBigSim( char * eventName , double p1 , double p2 , double p3 );