Merging
[charm.git] / src / ck-ldb / Refiner.h
1 /**
2  * \addtogroup CkLdb
3 */
4 /*@{*/
5
6 #ifndef _REFINER_H_
7 #define _REFINER_H_
8
9 #include "elements.h"
10 #include "ckheap.h"
11 #include "CentralLB.h"
12
13 class Refiner {
14 public:
15   Refiner(double _overload) { 
16     overLoad = _overload; computes=0; processors=0; 
17   };
18   ~Refiner() {}
19
20   static int* AllocProcs(int count, BaseLB::LDStats* stats);
21   static void FreeProcs(int* bufs);
22   void Refine(int count, BaseLB::LDStats* stats, int* cur_p, int* new_p);
23
24   double computeAverageLoad();
25   double computeMax();
26
27 protected:
28   void create(int count, BaseLB::LDStats* stats, int* cur_p);
29   virtual int refine();
30   int multirefine();
31   void assign(computeInfo *c, int p);
32   void assign(computeInfo *c, processorInfo *p);
33   void deAssign(computeInfo *c, processorInfo *pRec);
34   virtual void computeAverage();
35   int isHeavy(processorInfo *p);
36   int isLight(processorInfo *p);
37   void removeComputes();
38
39   double overLoad;
40   double averageLoad;
41   int P;
42   int numAvail;
43   int numComputes;
44   computeInfo* computes;
45   processorInfo* processors;
46 };
47
48 #endif /* _REFINER_H_ */
49
50
51 /*@}*/