Adding RefineTopoLB: a topology-based refiner
[charm.git] / src / ck-ldb / RefineTopoLB.h
1 #ifndef _REFINETOPOLB_H_
2 #define _REINETOPOLB_H_
3
4 #include "CentralLB.h"
5 #include "TopoLB.h"
6 #include "topology.h"
7
8 #ifndef INFTY
9 #define INFTY 999999999
10 #endif
11
12 void CreateTopoLB ();
13
14 class RefineTopoLB : public TopoLB
15 {
16   public:
17     RefineTopoLB (const CkLBOptions &opt);
18     RefineTopoLB (CkMigrateMessage *m) : TopoLB (m) { };
19   
20     void work (CentralLB::LDStats *stats, int count);
21     void pup (PUP::er &p) { TopoLB::pup(p); }
22         
23     //LBTopology                        *topo;
24   
25   protected:
26     double getCpartHopBytes(int cpart,int proc, int count);
27     double findSwapGain(int cpart1, int cpart2,int count);
28     double getInterMedHopBytes(CentralLB::LDStats *stats,int count, int *newmap);
29     CmiBool QueryBalanceNow (int step);
30 }; 
31
32
33 #endif /* _TOPOLB_H_ */