minor changes
[charm.git] / examples / bigsim / tools / loadlog / loadlog.C
1
2 #include <math.h>
3 #include "blue.h"
4 #include "blue_impl.h"
5
6 extern BgTimeLineRec* currTline;
7 extern int currTlineIdx;
8
9 int main()
10 {
11   int totalProcs, numX, numY, numZ, numCth, numWth, numPes;
12
13   // load bg trace summary file
14   printf("Loading bgTrace ... \n");
15   int status = BgLoadTraceSummary("bgTrace", totalProcs, numX, numY, numZ, numCth, numWth, numPes);
16   if (status == -1) exit(1);
17   printf("========= BgLog Version: %d ========= \n", bglog_version);
18   printf("Found %d (%dx%dx%d:%dw-%dc) simulated procs on %d real procs.\n", totalProcs, numX, numY, numZ, numWth, numCth, numPes);
19                                                                                 
20   int* allNodeOffsets = BgLoadOffsets(totalProcs,numPes);
21
22   // load each individual trace file for each bg proc
23   for (int i=0; i<totalProcs; i++) 
24   {
25     BgTimeLineRec tline;
26     int procNum = i;
27     currTline = &tline;
28     currTlineIdx = procNum;
29     int fileNum = BgReadProc(procNum,numWth,numPes,totalProcs,allNodeOffsets,tline);
30     CmiAssert(fileNum != -1);
31     printf("Loading bglog of proc %d from bgTrace%d succeed. \n", i, fileNum);
32                                                                                 
33     // some senity checking
34     printf("Proc %d has %d events. \n", i, tline.length());
35     for (int idx = 0; idx < tline.length(); idx ++)
36     {
37       BgTimeLog *bglog = tline[idx];
38 #if 1
39       if (fabs(bglog->execTime - ( bglog->endTime - bglog->startTime)) > 1e-6)
40         printf("Invalid log [%d,%d]: startT: %f endT: %f execT: %f\n", i, idx,
41                bglog->startTime, bglog->endTime, bglog->execTime);
42 #endif
43       for(int midx=0; midx < bglog->msgs.length(); midx++){
44         BgMsgEntry *msg = bglog->msgs[midx];
45         if (msg->sendTime < bglog->startTime || msg->sendTime > bglog->endTime)
46           printf("[%d] Invalid MsgEntry [%d]: sendTime: %f in log startT: %f endT: %f execT: %f\n", i, idx, msg->sendTime, bglog->startTime, bglog->endTime, bglog->execTime);
47       }
48     }
49
50     // dump bg timeline log to disk in ASCII format
51     BgWriteThreadTimeLine("detail", 0, 0, 0, procNum, tline.timeline);
52   }
53
54   delete [] allNodeOffsets;
55   printf("End of program\n");
56 }
57