build: fix travis MPI/SMP build
[charm.git] / src / ck-perf / trace-summaryBOC.h
1 #include "ckcallback-ccs.h"
2 #include "TraceSummary.decl.h"
3 #include <deque>
4
5 extern CkGroupID traceSummaryGID;
6 extern bool summaryCcsStreaming;
7
8 class TraceSummaryInit : public Chare {
9  public:
10   TraceSummaryInit(CkArgMsg *m) {
11     delete m;
12     traceSummaryGID = CProxy_TraceSummaryBOC::ckNew();
13
14     // No CCS Streaming support until user-code requires it.
15     summaryCcsStreaming = false;
16   }
17   TraceSummaryInit(CkMigrateMessage *m):Chare(m) {}
18 };
19
20 class TraceSummaryBOC : public CBase_TraceSummaryBOC {
21 private:
22   int count;
23   BinEntry *bins;
24   int  nBins;
25   int nTracedPEs;
26
27   bool firstTime; // used to make sure traceEnableCCS only has an effect the first time.
28   double _maxBinSize; //the max bin size collected from all processors
29 public:
30   /* CCS support variables */
31   int lastRequestedIndexBlock;
32   int indicesPerBlock;
33   double collectionGranularity; /* time in seconds */
34   int nBufferedBins;
35   CkVec<double> *ccsBufferedData;
36   int nextBinIndexCcs;
37
38 public:
39   TraceSummaryBOC(void): count(0), bins(NULL), nBins(0), 
40     nTracedPEs(0), firstTime(true), nextBinIndexCcs(0) {}
41   TraceSummaryBOC(CkMigrateMessage *m):CBase_TraceSummaryBOC(m) {}
42   void startSumOnly();
43   void askSummary(int size);
44   void sendSummaryBOC(double *results, int n);
45
46   /* CCS support methods/entry methods */
47   void initCCS();
48   void ccsRequestSummaryDouble(CkCcsRequestMsg *m);
49   void ccsRequestSummaryUnsignedChar(CkCcsRequestMsg *m);
50
51   void collectSummaryData(double startTime, double binSize, int numBins);
52   void summaryDataCollected(double *recvData, int numBins);
53
54   void traceSummaryParallelShutdown(int pe);
55   void maxBinSize(double _maxBinSize);
56   void shrink(double _maxBinSize);
57
58   void sumData(double *sumData, int totalsize);
59
60 private:
61   void write();
62 };
63
64 void startCollectData(void *data, double currT);