
00001 00005 00006 #ifndef _REFINER_H_ 00007 #define _REFINER_H_ 00008 00009 #include "elements.h" 00010 #include "ckheap.h" 00011 #include "CentralLB.h" 00012 00013 class Refiner { 00014 public: 00015 Refiner(double _overload) { 00016 overLoad = _overload; computes=0; processors=0; 00017 }; 00018 ~Refiner() {} 00019 00020 static int* AllocProcs(int count, BaseLB::LDStats* stats); 00021 static void FreeProcs(int* bufs); 00022 void Refine(int count, BaseLB::LDStats* stats, int* cur_p, int* new_p); 00023 00024 protected: 00025 void create(int count, BaseLB::LDStats* stats, int* cur_p); 00026 virtual int refine(); 00027 int multirefine(); 00028 void assign(computeInfo *c, int p); 00029 void assign(computeInfo *c, processorInfo *p); 00030 void deAssign(computeInfo *c, processorInfo *pRec); 00031 virtual void computeAverage(); 00032 double computeMax(); 00033 int isHeavy(processorInfo *p); 00034 int isLight(processorInfo *p); 00035 void removeComputes(); 00036 00037 double overLoad; 00038 double averageLoad; 00039 int P; 00040 int numAvail; 00041 int numComputes; 00042 computeInfo* computes; 00043 processorInfo* processors; 00044 }; 00045 00046 #endif /* _REFINER_H_ */ 00047 00048
1.5.5