doc: Add serial to list of ci file reserved words
[charm.git] / src / ck-ldb / RefinerComm.h
1 /**
2  * \addtogroup CkLdb
3 */
4 /*@{*/
5
6 #ifndef _REFINERCOMM_H_
7 #define _REFINERCOMM_H_
8
9 #include "CentralLB.h"
10 #include "Refiner.h"
11
12 class RefinerComm : public Refiner {
13 public:
14   RefinerComm(double _overload): Refiner(_overload)  { 
15     overLoad = _overload; computes=0; processors=0; 
16   };
17   ~RefinerComm() {}
18
19   void Refine(int count, BaseLB::LDStats* stats, int* cur_p, int* new_p);
20
21 private:
22   struct Messages {
23     int byteSent;
24     int msgSent;
25     int byteRecv; 
26     int msgRecv;
27     Messages() { clear(); }
28     void clear() { byteSent=msgSent=byteRecv=msgRecv=0; }
29     double cost() {
30       return msgSent * _lb_args.alpha() + 
31              byteSent * _lb_args.beeta() +
32              msgRecv * PER_MESSAGE_RECV_OVERHEAD + 
33              byteRecv * PER_BYTE_RECV_OVERHEAD;
34     }
35   };
36   struct CommTable {
37     int* msgSentCount; // # of messages sent by each PE
38     int* msgRecvCount; // # of messages received by each PE
39     int* byteSentCount;// # of bytes sent by each PE
40     int* byteRecvCount;// # of bytes reeived by each PE
41     int count;
42     CommTable(int p);
43     ~CommTable();
44     void clear();
45     void increase(bool issend, int pe, int msgs, int bytes);
46     double overheadOnPe(int pe);
47   };
48   BaseLB::LDStats* stats;
49   CommTable *commTable;
50
51   void create(int count, BaseLB::LDStats* , int* cur_p);
52   void processorCommCost();
53   void assign(computeInfo *c, int p);
54   void assign(computeInfo *c, processorInfo *p);
55   void deAssign(computeInfo *c, processorInfo *pRec);
56   virtual int refine();
57   virtual void computeAverage();
58   void objCommCost(int c, int pe, Messages &m);
59   void commAffinity(int c, int pe, Messages &m);
60   inline void printLoad() {
61       for (int i=0; i<P; i++) CmiPrintf("%f ", processors[i].load);
62       CmiPrintf("\n");
63   }
64 };
65
66 #endif /* _REFINERCOMM_H_ */
67
68
69 /*@}*/