ck-ldb: removed include of charm++.h and cklists.h
[charm.git] / src / ck-ldb / GridCommRefineLB.h
1 #ifndef _GRIDCOMMREFINELB_H_
2 #define _GRIDCOMMREFINELB_H_
3
4 #include <limits.h>
5 #include <stdio.h>
6
7 #include "CentralLB.h"
8
9 #define CK_LDB_GRIDCOMMREFINELB_TOLERANCE 1.10
10
11 #ifndef MAXINT
12 #define MAXINT 2147483647
13 #endif
14
15 #if CONVERSE_VERSION_VMI
16 extern "C" int CmiGetCluster (int process);
17 #endif
18
19 void CreateGridCommRefineLB ();
20
21 class PE_Data_T
22 {
23   public:
24     CmiBool available;
25     int cluster;
26     int num_objs;
27     int num_lan_objs;
28     int num_lan_msgs;
29     int num_wan_objs;
30     int num_wan_msgs;
31     double relative_speed;
32     double scaled_load;
33 };
34
35 class Object_Data_T
36 {
37   public:
38     CmiBool migratable;
39     int cluster;
40     int from_pe;
41     int to_pe;
42     int num_lan_msgs;
43     int num_wan_msgs;
44     double load;
45 };
46
47 class GridCommRefineLB : public CentralLB
48 {
49   public:
50     GridCommRefineLB (const CkLBOptions &);
51     GridCommRefineLB (CkMigrateMessage *msg);
52
53     CmiBool QueryBalanceNow (int step);
54     void work (LDStats *stats);
55     void pup (PUP::er &p) { CentralLB::pup (p); }
56
57   private:
58     int Get_Cluster (int pe);
59     void Initialize_PE_Data (CentralLB::LDStats *stats);
60     int Available_PE_Count ();
61     int Compute_Number_Of_Clusters ();
62     void Initialize_Object_Data (CentralLB::LDStats *stats);
63     void Examine_InterObject_Messages (CentralLB::LDStats *stats);
64     void Place_Objects_On_PEs ();
65     void Remap_Objects_To_PEs (int cluster);
66     int Find_Maximum_WAN_Object (int pe);
67     int Find_Minimum_WAN_PE (int cluster);
68     void Remove_Object_From_PE (int target_object, int target_pe);
69     void Assign_Object_To_PE (int target_object, int target_pe);
70
71     int Num_PEs;
72     int Num_Objects;
73     int Num_Clusters;
74     PE_Data_T *PE_Data;
75     Object_Data_T *Object_Data;
76     double CK_LDB_GridCommRefineLB_Tolerance;
77 };
78
79 #endif