doc: Add serial to list of ci file reserved words
[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
12
13
14
15 extern "C" void METIS_PartGraphRecursive (int*, int*, int*, int*, int*, int*,
16                                           int*, int*, int*, int*, int*);
17
18 extern "C" void METIS_PartGraphKway (int*, int*, int*, int*, int*, int*,
19                                      int*, int*, int*, int*, int*);
20
21 extern "C" void METIS_PartGraphVKway (int*, int*, int*, int*, int*, int*,
22                                       int*, int*, int*, int*, int*);
23
24 extern "C" void METIS_WPartGraphRecursive (int*, int*, int*, int*,
25                                            int*, int*, int*, int*,
26                                            float*, int*, int*, int*);
27
28 extern "C" void METIS_WPartGraphKway (int*, int*, int*, int*,
29                                       int*, int*, int*, int*,
30                                       float*, int*, int*, int*);
31
32 extern "C" void METIS_mCPartGraphRecursive (int*, int*, int*, int*,
33                                             int*, int*, int*, int*,
34                                             int*, int*, int*, int*);
35
36 extern "C" void METIS_mCPartGraphKway (int*, int*, int*, int*, int*,
37                                        int*, int*, int*, int*, int*,
38                                        int*, int*, int*);
39
40
41
42
43
44
45 void CreateTopoLB ();
46
47 class TopoLB : public CentralLB
48 {
49   public:
50     TopoLB (const CkLBOptions &opt);
51     TopoLB (CkMigrateMessage *m) : CentralLB (m) { };
52   
53     void work (LDStats *stats);
54    // void work_fromFile (char *filename);
55     void pup (PUP::er &p) { CentralLB::pup(p); }
56         
57     LBTopology                  *topo;
58   
59   protected:
60
61     double **dist;
62     double **comm;
63     double *commUA;
64     double **hopBytes;
65     bool *pfree;
66     bool *cfree;
67     int *assign;
68     double total_comm;
69     
70     virtual void computePartitions(CentralLB::LDStats *stats,int count,int *newmap);
71     virtual void allocateDataStructures(int num_procs);
72     virtual void freeDataStructures(int num_procs);
73     virtual void initDataStructures(CentralLB::LDStats *stats,int count,int *newmap);
74     virtual void printDataStructures(int num_procs, int num_objs, int *newmap);
75     virtual double getHopBytes(CentralLB::LDStats *stats,int count,CkVec<int>obj_to_proc);
76     virtual double getHopBytesNew(int *assign_map, int count);
77     void performMapping(int *newmap, int count);
78     
79     CmiBool QueryBalanceNow (int step);
80 }; 
81
82
83 #endif /* _TOPOLB_H_ */