Bug #1359: Removed ODR violations among LB helper classes
[charm.git] / src / ck-ldb / TempAwareCommLB.h
blob38ae1e6c0fb690b7f25d2a01e3a4a107002cdbf8
2 #ifndef _COMMAWARELB_H_
3 #define _COMMAWARELB_H_
5 #include "CentralLB.h"
6 #include "TempAwareCommLB.decl.h"
8 void CreateTempAwareCommLB();
9 BaseLB * AllocateTempAwareCommLB();
11 class TempAwareCommLB : public CBase_TempAwareCommLB {
12 friend void printCurrentTemperature(void *LB, double curWallTime);
13 public:
14 struct HeapData {
15 double load;
16 int pe;
17 int id;
20 void populateEffectiveFreq(int numProcs);
21 void convertToInsts();
22 int procsPerNode,*freqsEffect,*procFreq,*procFreqEffect,*procFreqNewEffect,*procFreqNew,numProcs,coresPerChip,*freqs,numAvailFreqs;
23 int numChips,*procFreqPtr;
24 void initStructs(LDStats *s);
25 void tempControl();
26 FILE *migFile;
27 double starting;
29 float *procTemp,*avgChipTemp;
30 TempAwareCommLB(const CkLBOptions &);
31 TempAwareCommLB(CkMigrateMessage *m):CBase_TempAwareCommLB(m) {
32 lbname = "TempAwareCommLB";
34 void work(LDStats* stats);
36 class ProcLoadGreater;
37 class ObjLoadGreater;
38 class PeCommInfo;
39 class ObjPeCommInfo;
40 class ProcCommGreater;
42 private:
44 enum HeapCmp {GT = '>', LT = '<'};
45 void Heapify(HeapData*, int, int, HeapCmp);
46 void HeapSort(HeapData*, int, HeapCmp);
47 void BuildHeap(HeapData*, int, HeapCmp);
48 bool Compare(double, double, HeapCmp);
49 HeapData* BuildCpuArray(BaseLB::LDStats*, int, int *);
50 HeapData* BuildObjectArray(BaseLB::LDStats*, int, int *);
51 bool QueryBalanceNow(int step);
54 #endif /* _COMMAWARELB_H_ */
56 /*@}*/