Refactoring, printfs
[charm.git] / src / ck-ldb / TopoLB.h
1 #ifndef _TOPOLB_H_
2 #define _TOPOLB_H_
3
4 #include "CentralLB.h"
5 #include "topology.h"
6
7 #ifndef INFTY
8 #define INFTY 999999999
9 #endif
10
11 void CreateTopoLB ();
12
13 class TopoLB : public CentralLB
14 {
15   public:
16     TopoLB (const CkLBOptions &opt);
17     TopoLB (CkMigrateMessage *m) : CentralLB (m) { };
18   
19     void work (CentralLB::LDStats *stats, int count);
20    // void work_fromFile (char *filename);
21     void pup (PUP::er &p) { CentralLB::pup(p); }
22         
23     LBTopology                  *topo;
24   
25   protected:
26
27     double **dist;
28     double **comm;
29     double *commUA;
30     double **hopBytes;
31     bool *pfree;
32     bool *cfree;
33     int *assign;
34     double total_comm;
35     
36     virtual void computePartitions(CentralLB::LDStats *stats,int count,int *newmap);
37     virtual void allocateDataStructures(int num_procs);
38     virtual void freeDataStructures(int num_procs);
39     virtual void initDataStructures(CentralLB::LDStats *stats,int count,int *newmap);
40     virtual void printDataStructures(int num_procs, int num_objs, int *newmap);
41     virtual double getHopBytes(CentralLB::LDStats *stats,int count,CkVec<int>obj_to_proc);
42     virtual double getHopBytesNew(int *assign_map, int count);
43     void performMapping(int *newmap, int count);
44     
45     CmiBool QueryBalanceNow (int step);
46 }; 
47
48
49 #endif /* _TOPOLB_H_ */