Cleanup #48: Move SdagConstruct::numberNodes into each subclass
[charm.git] / src / ck-ldb / GreedyAgentLB.h
bloba981b37c40deeb940a115653ce1f67d086bca636
1 /**
2 * \addtogroup CkLdb
3 */
4 /*@{*/
6 #ifndef _GREEDYAGENTLB_H_
7 #define _GREEDYAGENTLB_H_
9 #include "CentralLB.h"
10 #include "GreedyAgentLB.decl.h"
11 #include "LBAgent.h"
13 void CreateGreedyAgentLB();
15 class GreedyAgentLB : public CBase_GreedyAgentLB {
17 public:
18 struct HeapData {
19 double load;
20 int pe;
21 int id;
24 GreedyAgentLB(const CkLBOptions &);
25 GreedyAgentLB(CkMigrateMessage *m):CBase_GreedyAgentLB(m) { lbname = "GreedyAgentLB"; }
26 void work(LDStats* stats);
27 private:
28 TopologyAgent *topologyAgent;
29 enum HeapCmp {GT = '>', LT = '<'};
30 void Heapify(HeapData*, int, int, HeapCmp);
31 void HeapSort(HeapData*, int, HeapCmp);
32 void BuildHeap(HeapData*, int, HeapCmp);
33 bool Compare(double, double, HeapCmp);
34 HeapData* BuildCpuArray(CentralLB::LDStats*, int, int *);
35 HeapData* BuildObjectArray(CentralLB::LDStats*, int, int *);
36 bool QueryBalanceNow(int step);
39 #endif /* _GREEDYAGENTLB_H_ */
41 /*@}*/