AMPI: drop comm argument from AMPI_Comm_set_migratable and rename to AMPI_Set_migratable
[charm.git] / src / ck-ldb / GreedyLB.h
blob77576e09d00e14f530ecd4086ff1425bd9f68a1f
1 /**
2 * \addtogroup CkLdb
3 */
4 /*@{*/
6 #ifndef _GREEDYLB_H_
7 #define _GREEDYLB_H_
9 #include "CentralLB.h"
10 #include "GreedyLB.decl.h"
12 void CreateGreedyLB();
13 BaseLB * AllocateGreedyLB();
15 class GreedyLB : public CBase_GreedyLB {
17 public:
18 struct HeapData {
19 double load;
20 int pe;
21 int id;
24 GreedyLB(const CkLBOptions &);
25 GreedyLB(CkMigrateMessage *m):CBase_GreedyLB(m) { lbname = "GreedyLB"; }
26 void work(LDStats* stats);
27 private:
28 class ProcLoadGreater;
29 class ObjLoadGreater;
31 enum HeapCmp {GT = '>', LT = '<'};
32 void Heapify(HeapData*, int, int, HeapCmp);
33 void HeapSort(HeapData*, int, HeapCmp);
34 void BuildHeap(HeapData*, int, HeapCmp);
35 bool Compare(double, double, HeapCmp);
36 HeapData* BuildCpuArray(BaseLB::LDStats*, int, int *);
37 HeapData* BuildObjectArray(BaseLB::LDStats*, int, int *);
38 bool QueryBalanceNow(int step);
41 #endif /* _HEAPCENTLB_H_ */
43 /*@}*/