Changed way load balancers are used: load balancers
authorOrion Lawlor <olawlor@acm.org>
Thu, 6 Dec 2001 23:12:14 +0000 (23:12 +0000)
committerOrion Lawlor <olawlor@acm.org>
Thu, 6 Dec 2001 23:12:14 +0000 (23:12 +0000)
can now be selected at link time with the "-module FooLB"
command.  Multiple load balancers can be linked,
but the last one passed (and thus the last one to
get its initcall called) "wins".

25 files changed:
src/ck-ldb/Comm1LB.C
src/ck-ldb/Comm1LB.ci
src/ck-ldb/CommLB.C
src/ck-ldb/CommLB.ci
src/ck-ldb/GreedyRefLB.C
src/ck-ldb/GreedyRefLB.ci
src/ck-ldb/HeapCentLB.C
src/ck-ldb/HeapCentLB.ci
src/ck-ldb/LBDatabase.C
src/ck-ldb/LBDatabase.ci
src/ck-ldb/LBDatabase.h
src/ck-ldb/MetisLB.C
src/ck-ldb/MetisLB.ci
src/ck-ldb/NeighborLB.C
src/ck-ldb/NeighborLB.ci
src/ck-ldb/RandCentLB.C
src/ck-ldb/RandCentLB.ci
src/ck-ldb/RandRefLB.C
src/ck-ldb/RandRefLB.ci
src/ck-ldb/RecBisectBfLB.C
src/ck-ldb/RecBisectBfLB.ci
src/ck-ldb/RefineLB.C
src/ck-ldb/RefineLB.ci
src/ck-ldb/WSLB.C
src/ck-ldb/WSLB.ci

index 6e9e4dbc658c4837b9b85e365669aa772998d64c..b125e72638d9206a8fb90e6fd9be365614ed5eb3 100644 (file)
@@ -13,7 +13,6 @@
 #include "cklists.h"
 
 #include "Comm1LB.h"
-#include "Comm1LB.def.h"
 
 #define alpha 35e-6
 #define beeta 8.5e-9
@@ -27,6 +26,12 @@ void CreateComm1LB()
   loadbalancer = CProxy_Comm1LB::ckNew();
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateComm1LB);        
+}
+
+#include "Comm1LB.def.h"
+
 Comm1LB::Comm1LB()
 {
   if (CkMyPe() == 0)
index 203e0c9829944dcd55d5003b3ce26e1ea4f65df7..6febbd3909d0945bf6d2895d183e961bf931007a 100644 (file)
@@ -1,7 +1,7 @@
 module Comm1LB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group Comm1LB : CentralLB {
   entry void Comm1LB(void);  
 };
index a892a6acd8b07201366ce1f9070c3e15f5d7edd5..f99c5a8bc968bcd3f942e35ab5a27c7e6522dc8c 100644 (file)
@@ -13,7 +13,6 @@
 #include "cklists.h"
 
 #include "CommLB.h"
-#include "CommLB.def.h"
 
 #define alpha 35e-6
 #define beeta 8.5e-9
@@ -23,6 +22,12 @@ void CreateCommLB()
     loadbalancer = CProxy_CommLB::ckNew();
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateCommLB);        
+}
+
+#include "CommLB.def.h"
+
 CommLB::CommLB()
 {
     if (CkMyPe() == 0)
index 91d8aaf06316e5bc2ee133c5bf43a9db7cfb14f6..7e1ac9fa2162dee2f6ef26eccb9d07ffa9d3e775 100644 (file)
@@ -1,7 +1,7 @@
 module CommLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group CommLB : CentralLB {
   entry void CommLB(void);  
 };
index db699c627ddb7dd1aebc6edee7e7d42f428ebbe2..121714d0a52ccf41bdabff1f7a13b430674c2f3f 100644 (file)
@@ -11,7 +11,6 @@
 
 #include "cklists.h"
 #include "GreedyRefLB.h"
-#include "GreedyRefLB.def.h"
 
 void CreateGreedyRefLB()
 {
@@ -20,6 +19,12 @@ void CreateGreedyRefLB()
   //  CkPrintf("[%d] created GreedyRefLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateGreedyRefLB);        
+}
+
+#include "GreedyRefLB.def.h"
+
 GreedyRefLB::GreedyRefLB()
 {
   if (CkMyPe()==0)
index c573595b0b8798e077355655d39e772bca184659..f303f0ab2d8338904d304ab5a40447569f5b52fa 100644 (file)
@@ -1,7 +1,7 @@
 module GreedyRefLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group GreedyRefLB : CentralLB {
   entry void GreedyRefLB(void);  
 };
index 20b00b453ba2b42baf960080bda37ee3bc389af4..c0392e1c5392b5576dbe1c858eac62ecc66284e5 100644 (file)
@@ -11,7 +11,6 @@
 
 #include "cklists.h"
 #include "HeapCentLB.h"
-#include "HeapCentLB.def.h"
 
 void CreateHeapCentLB()
 {
@@ -20,6 +19,12 @@ void CreateHeapCentLB()
   //  CkPrintf("[%d] created HeapCentLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateHeapCentLB);        
+}
+
+#include "HeapCentLB.def.h"
+
 HeapCentLB::HeapCentLB()
 {
   if (CkMyPe()==0)
index 5c88b70e34416fbc3e4d9ae34afd5b88e6f8d4b3..c13d73cffb2b96e4ad7bbdcad95c309840aa83e9 100644 (file)
@@ -1,7 +1,7 @@
 module HeapCentLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group HeapCentLB : CentralLB {
   entry void HeapCentLB(void);  
 };
index 8a8df12f1b8f8d94b0b28f47553cf75ae355396a..79365c377eb00897ce1526c0104906667a7bfbb4 100644 (file)
 
 CkGroupID lbdb;
 
+static LBDefaultCreateFn defaultCreate=NULL;
+void LBSetDefaultCreate(LBDefaultCreateFn f)
+{
+       defaultCreate=f;
+}
+
+
 LBDBInit::LBDBInit(CkArgMsg *m)
 {
 #if CMK_LBDB_ON
   lbdb = CProxy_LBDatabase::ckNew();
+  if (defaultCreate) (defaultCreate)();
 #endif
   delete m;
 }
index c67d1cf3ff35e59511570a0b6bc4b03da89c7eda..47483c671b6c2c8710d45910e6d10072b9938081 100644 (file)
@@ -1,4 +1,5 @@
 module LBDatabase {
+  extern module NullLB;
 
   readonly CkGroupID lbdb;
 
index 2883be2c1c6005ebc509a00d5078faaaac049231..92a4f50428d6cce8618355c45bb6060205eb72c2 100644 (file)
@@ -13,6 +13,9 @@
 
 extern CkGroupID lbdb;
 
+typedef void (*LBDefaultCreateFn)(void);
+void LBSetDefaultCreate(LBDefaultCreateFn f);
+
 class LBDBInit : public Chare {
   public:
     LBDBInit(CkArgMsg*);
index b926900b41673a551b767d052d65cfe9c8ca0b48..6c40f8e833fdbb12a16e06fad55d904d85c2b3ef 100644 (file)
@@ -12,7 +12,6 @@
 #include "cklists.h"
 
 #include "MetisLB.h"
-#include "MetisLB.def.h"
 
 void CreateMetisLB()
 {
@@ -21,6 +20,12 @@ void CreateMetisLB()
   // CkPrintf("[%d] created MetisLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateMetisLB);
+}
+
+#include "MetisLB.def.h"
+
 MetisLB::MetisLB()
 {
   if (CkMyPe() == 0)
index 0133b9ff56324d1ac0aafd790eed9cf1abd24eb3..f120cd194bb841c1757c12f01d85e4dd1a25ba29 100644 (file)
@@ -1,7 +1,7 @@
 module MetisLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group MetisLB : CentralLB {
   entry void MetisLB(void);  
 };
index d02ef021568c9c87e0c59e1d1598161ea96b6fc3..c7c41ea35a2eaceaf61d48c5ce611feb1fbc02a9 100644 (file)
 
 #include "heap.h"
 #include "NeighborLB.h"
-#include "NeighborLB.def.h"
 
 void CreateNeighborLB()
 {
   nborBaselb = CProxy_NeighborLB::ckNew();
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateNeighborLB);        
+}
+
+#include "NeighborLB.def.h"
+
 NeighborLB::NeighborLB()
 {
   if (CkMyPe() == 0)
index 430d51954c691253c6074ef337e98eb5fdb28328..cb321b6e8210a11caf15a6c42cd4f0538f66a5e3 100644 (file)
@@ -1,7 +1,7 @@
 module NeighborLB {
 
 extern module NborBaseLB;
-
+initcall void lbinit(void);
 group NeighborLB : NborBaseLB {
   entry void NeighborLB(void);  
 };
index 379e97c8fb80f7a06aab332c36b28566552d06ba..e63318f4cf49e1621ca52b2fac8258c39c996c3e 100644 (file)
@@ -12,7 +12,6 @@
 #include "cklists.h"
 
 #include "RandCentLB.h"
-#include "RandCentLB.def.h"
 
 void CreateRandCentLB()
 {
@@ -21,6 +20,11 @@ void CreateRandCentLB()
   //  CkPrintf("[%d] created RandCentLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+       LBSetDefaultCreate(CreateRandCentLB);
+}
+#include "RandCentLB.def.h"
+
 RandCentLB::RandCentLB()
 {
   if (CkMyPe() == 0)
index caec764f014ca6985de6d7f1c4b84291115a50a7..64dc4057effa49a7da9daeb122ab207249292203 100644 (file)
@@ -1,7 +1,7 @@
 module RandCentLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group RandCentLB : CentralLB {
   entry void RandCentLB(void);  
 };
index dcfd9efba9a6d4f64c75e470169a21064ed48bd9..8a837886dc21991124b64fd7f6fcfa7a29f0fab7 100644 (file)
@@ -13,7 +13,6 @@
 #include "Refiner.h"
 
 #include "RandRefLB.h"
-#include "RandRefLB.def.h"
 
 void CreateRandRefLB()
 {
@@ -22,6 +21,12 @@ void CreateRandRefLB()
   //  CkPrintf("[%d] created RandRefLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateRandRefLB);
+}
+
+#include "RandRefLB.def.h"
+
 RandRefLB::RandRefLB()
 {
   if (CkMyPe() == 0)
index 6babd0ed19f507ce02b0a4c7858779b10c7fea70..de0948fc018d0ce62b43aab83bf303d052c67baf 100644 (file)
@@ -1,7 +1,7 @@
 module RandRefLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group RandRefLB : CentralLB {
   entry void RandRefLB(void);  
 };
index b456a31448401fb690781e510974dc3aafa4cea3..46cb76776a1671286e4825d97898f35ebbc4af07 100644 (file)
@@ -10,7 +10,6 @@
 #if CMK_LBDB_ON
 
 #include "RecBisectBfLB.h"
-#include "RecBisectBfLB.def.h"
 
 extern "C" {
   Graph * initGraph(int v, int e);
@@ -41,6 +40,12 @@ void CreateRecBisectBfLB()
   //  CkPrintf("[%d] created RecBisectBfLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateRecBisectBfLB);
+}
+
+#include "RecBisectBfLB.def.h"
+
 RecBisectBfLB::RecBisectBfLB()
 {
   if (CkMyPe() == 0)
index 00bf2e969f20513426d15f541405175b443235a3..c55051fecbca4efa7081aed1a08371c86ba94079 100644 (file)
@@ -1,7 +1,7 @@
 module RecBisectBfLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group RecBisectBfLB : CentralLB {
   entry void RecBisectBfLB(void);  
 };
index d088ff981c18a31da999431e6759e13a1b5f0bea..ca78c016f46f09432ab7b5217a09f12f43b86632 100644 (file)
@@ -12,7 +12,6 @@
 #include "cklists.h"
 
 #include "RefineLB.h"
-#include "RefineLB.def.h"
 
 void CreateRefineLB()
 {
@@ -20,6 +19,12 @@ void CreateRefineLB()
   //  CkPrintf("[%d] created RefineLB %d\n",CkMyPe(),loadbalancer);
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateRefineLB);        
+}
+
+#include "RefineLB.def.h"
+
 RefineLB::RefineLB()
 {
   if (CkMyPe() == 0)
index 25f78fa73c779fe8e7b88b9fa4d490e82ab4dd2f..9711dc71b502df313f0de83ce6aa2eaaf9e1048b 100644 (file)
@@ -1,7 +1,7 @@
 module RefineLB {
 
 extern module CentralLB;
-
+initcall void lbinit(void);
 group RefineLB : CentralLB {
   entry void RefineLB(void);  
 };
index c200128aecab4783b3e4b0bd254dabf576b76b39..36ec875582dc8e3b6792e4fcca1db8b78616d68b 100644 (file)
@@ -13,7 +13,6 @@
 #include <cklists.h>
 #include "heap.h"
 #include "WSLB.h"
-#include "WSLB.def.h"
 
 CkGroupID wslb;
 
@@ -32,6 +31,10 @@ void CreateWSLB()
   wslb = CProxy_WSLB::ckNew();
 }
 
+static void lbinit(void) {
+        LBSetDefaultCreate(CreateWSLB);        
+}
+
 void WSLB::staticMigrated(void* data, LDObjHandle h)
 {
   WSLB *me = (WSLB*)(data);
@@ -571,4 +574,7 @@ WSLBMigrateMsg* WSLBMigrateMsg::unpack(void *m)
   return ret_val;
 }
 
+#include "WSLB.def.h"
 #endif
+
+
index 89d4bb522d1c71fa918319b485a51966b54d5f0e..d9c3c32b55971dba2ba5f84a40a5bd4a3a11cd88 100644 (file)
@@ -1,6 +1,7 @@
 module WSLB {
 
 extern module LBDatabase;
+initcall void lbinit(void);
 
 readonly CkGroupID wslb;