388a0632bc3445fd5927d86018e9252db22629ea
[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 protected:
25   void create(int count, BaseLB::LDStats* stats, int* cur_p);
26   virtual int refine();
27   int multirefine();
28   void assign(computeInfo *c, int p);
29   void assign(computeInfo *c, processorInfo *p);
30   void deAssign(computeInfo *c, processorInfo *pRec);
31   virtual void computeAverage();
32   double computeMax();
33   int isHeavy(processorInfo *p);
34   int isLight(processorInfo *p);
35   void removeComputes();
36
37   double overLoad;
38   double averageLoad;
39   int P;
40   int numAvail;
41   int numComputes;
42   computeInfo* computes;
43   processorInfo* processors;
44 };
45
46 #endif /* _REFINER_H_ */
47
48
49 /*@}*/