Checkpointing support. 1st edition.
authorChao Huang <chuang10@uiuc.edu>
Fri, 21 Mar 2003 00:31:39 +0000 (00:31 +0000)
committerChao Huang <chuang10@uiuc.edu>
Fri, 21 Mar 2003 00:31:39 +0000 (00:31 +0000)
Added ckcheckpoint manager and changed _initCharm.
Also changed some system group to IrrGroup and added migrate constructor.

40 files changed:
src/ck-ldb/BaseLB.C
src/ck-ldb/BaseLB.ci
src/ck-ldb/BaseLB.h
src/ck-ldb/CentralLB.ci
src/ck-ldb/CentralLB.h
src/ck-ldb/Comm1LB.ci
src/ck-ldb/Comm1LB.h
src/ck-ldb/CommLB.C
src/ck-ldb/CommLB.ci
src/ck-ldb/CommLB.h
src/ck-ldb/DummyLB.h
src/ck-ldb/GreedyRefLB.ci
src/ck-ldb/GreedyRefLB.h
src/ck-ldb/HeapCentLB.ci
src/ck-ldb/HeapCentLB.h
src/ck-ldb/LBDatabase.C
src/ck-ldb/LBDatabase.ci
src/ck-ldb/LBDatabase.h
src/ck-ldb/MetisLB.ci
src/ck-ldb/MetisLB.h
src/ck-ldb/NborBaseLB.ci
src/ck-ldb/NborBaseLB.h
src/ck-ldb/NeighborLB.ci
src/ck-ldb/NeighborLB.h
src/ck-ldb/NullLB.ci
src/ck-ldb/NullLB.h
src/ck-ldb/OrbLB.h
src/ck-ldb/RandCentLB.ci
src/ck-ldb/RandCentLB.h
src/ck-ldb/RandRefLB.ci
src/ck-ldb/RandRefLB.h
src/ck-ldb/RecBisectBfLB.ci
src/ck-ldb/RecBisectBfLB.h
src/ck-ldb/RefineLB.ci
src/ck-ldb/RefineLB.h
src/ck-ldb/WSLB.ci
src/ck-ldb/WSLB.h
src/ck-perf/trace-summary.ci
src/ck-perf/trace-summaryBOC.h
src/scripts/Makefile

index a3b2abf1e590700cad1b06ec0cedb203495bd328..83225b9d2817785b7b2ef0e1ee2983943a5f375c 100644 (file)
@@ -17,7 +17,7 @@
 
 BaseLB::BaseLB() {
   CkpvAccess(numLoadBalancers) ++;
-//CmiPrintf("[%d] BaseLB created!\n", CkMyPe());
+CmiPrintf("[%d] BaseLB created! numLB=%d\n", CkMyPe(),CkpvAccess(numLoadBalancers));
   if (CkpvAccess(numLoadBalancers) - CkpvAccess(hasNullLB) > 1)
     CmiAbort("Error: try to create more than one load balancer strategies!");
   lbname = "Unknown";
index f0944492fee1190a930d462e7bc362cadb144295..70c4da7212d331f46816ae9cbd1b0659d3f7e168 100644 (file)
@@ -4,7 +4,7 @@ extern module LBDatabase;
 
 message LBMigrateMsg;
 
-group BaseLB {
+group [migratable] BaseLB {
   entry void BaseLB(void);  
   entry void unregister(void);
 };
index 0ea0fbac2988038bdfed0e7487ed831cb9b13d23..eae63386e5eb451f2109cf7856b12f12a6de62ba 100644 (file)
@@ -21,7 +21,7 @@
   it does some tracking about how many lb strategies are created.
   it also defines some common functions.
 */
-class BaseLB: public Group
+class BaseLB: public IrrGroup
 {
 protected:
   char *lbname;
@@ -29,6 +29,7 @@ protected:
   LDBarrierReceiver receiver;
 public:
   BaseLB() ;
+  BaseLB(CkMigrateMessage *m):IrrGroup(m) { /* empty */ }
   void unregister(); 
   inline char *lbName() { return lbname; }
 };
index ed2ec0f3b6a94520244bb4b1b1f89ed7460749fa..4fe8c71c667156608b1ece00c248380d0b0181f1 100644 (file)
@@ -11,7 +11,7 @@ message CLBStatsMsg{
  char       avail_vector[];
 };
 
-group CentralLB : BaseLB {
+group [migratable] CentralLB : BaseLB {
   entry void CentralLB(void);  
   entry void ProcessAtSync(void);
   entry void ReceiveStats(CLBStatsMsg*);
index b9b47cc835583b7f4f7d50832d339e76a6d9e409..cddc38cc582c86fd61315360d93c5927dcd0c7ad 100644 (file)
@@ -38,7 +38,7 @@ class CentralLB : public CBase_CentralLB
 public:
   CentralLB();
   ~CentralLB();
-  CentralLB(CkMigrateMessage *m) {}
+  CentralLB(CkMigrateMessage *m):IrrGroup(m) {}
   static void staticAtSync(void*);
   void AtSync(void); // Everything is at the PE barrier
   void ProcessAtSync(void); // Receive a message from AtSync to avoid
index 6febbd3909d0945bf6d2895d183e961bf931007a..ee949c77abe308f29ba2d4638e0664ca59e79706 100644 (file)
@@ -2,7 +2,7 @@ module Comm1LB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group Comm1LB : CentralLB {
+group [migratable] Comm1LB : CentralLB {
   entry void Comm1LB(void);  
 };
 
index 340c38befdf14f528e5665c7b35e7f7f14436601..def7ee8990c42882e544e99d8a4711618667fba2 100644 (file)
@@ -37,7 +37,7 @@ public:
   obj_id * translate;
   int * htable;
   Comm1LB();
-  Comm1LB(CkMigrateMessage *m) {}
+  Comm1LB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index a1cc5a9d5e47df019c121f618df1989a4f3865fc..971447c3d6bd0f346e2802da5dfe2246d25f735a 100644 (file)
@@ -43,6 +43,10 @@ CommLB::CommLB()
        CkPrintf("[%d] CommLB created\n",CkMyPe());
     manager_init();
 }
+CommLB::CommLB(CkMigrateMessage *m):CentralLB(m) {
+    lbname = "CommLB";
+    manager_init();
+}
 
 CmiBool CommLB::QueryBalanceNow(int _step)
 {
index 7e1ac9fa2162dee2f6ef26eccb9d07ffa9d3e775..ae34be4cafb3558ba04044e7c28d27a3c7e940d5 100644 (file)
@@ -2,7 +2,7 @@ module CommLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group CommLB : CentralLB {
+group [migratable] CommLB : CentralLB {
   entry void CommLB(void);  
 };
 
index 40c79c6db2206e2a15ba964169bf8d81046eecda..209959624dd06a1e9ebcaacf0e184f6060b5ed5d 100644 (file)
@@ -41,7 +41,7 @@ public:
   obj_id * translate;
   int * htable;
   CommLB();
-  CommLB(CkMigrateMessage *m) {}
+  CommLB(CkMigrateMessage *m);
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index 7eb545951811a59e76ffca39d35c3a7328742882..d3226f45e281fcdc046a99f1827b1ae6892d34c3 100644 (file)
@@ -21,7 +21,7 @@ void CreateDummyLB();
 class DummyLB : public CentralLB {
 public:
   DummyLB();
-  DummyLB(CkMigrateMessage *m) {}
+  DummyLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index f303f0ab2d8338904d304ab5a40447569f5b52fa..8459c8ad301531e33de1ce597dfbce1b37d380e0 100644 (file)
@@ -2,7 +2,7 @@ module GreedyRefLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group GreedyRefLB : CentralLB {
+group [migratable] GreedyRefLB : CentralLB {
   entry void GreedyRefLB(void);  
 };
 
index 202c1f42adf68fed4a17c63139773021a191d54f..cde107642a1a5c64f7fed88dd41e2c89e5ee3f06 100644 (file)
@@ -29,7 +29,7 @@ struct HeapData {
 
 public:
   GreedyRefLB();
-  GreedyRefLB(CkMigrateMessage *m) {}
+  GreedyRefLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
        enum           GreedyCmp {GT = '>', LT = '<'};
        CmiBool        Compare(double, double, GreedyCmp);
index c13d73cffb2b96e4ad7bbdcad95c309840aa83e9..81957e54a83b0d29ce6b94ac1b0cf42e6a67cf13 100644 (file)
@@ -2,7 +2,7 @@ module HeapCentLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group HeapCentLB : CentralLB {
+group [migratable] HeapCentLB : CentralLB {
   entry void HeapCentLB(void);  
 };
 
index f3ac1e17e0e7da4d713959270cab3dd7ed6a36f6..d360e2ea39147cd1d7e3754f84794c57cf5c6499 100644 (file)
@@ -28,7 +28,7 @@ public:
   };
 
   HeapCentLB();
-  HeapCentLB(CkMigrateMessage *m) {}
+  HeapCentLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
        enum           HeapCmp {GT = '>', LT = '<'};
     void           Heapify(HeapData*, int, int, HeapCmp);
index 9760c8a534dbffeb6ca6b3304c1916c6e5d7245d..396bbec24e285ba8fc8ccd58bb0d13a5c06abe26 100644 (file)
@@ -114,6 +114,37 @@ LBDBInit::LBDBInit(CkArgMsg *m)
   delete m;
 }
 
+LBDatabase::LBDatabase(CkMigrateMessage *m):IrrGroup(m) {
+    myLDHandle = LDCreate();
+    CkpvAccess(lbdatabaseInited) = 1;
+#if CMK_LBDB_ON
+    if (manualOn) TurnManualLBOn();
+#endif
+
+/*
+  LBDefaultCreateFn lbFn = defaultCreate;
+  char *balancer = lbRegistry.defaultLB();
+  if (balancer) {
+    LBDefaultCreateFn fn = lbRegistry.search(balancer);
+    if (!fn) {
+      lbRegistry.displayLBs();
+      CmiPrintf("Abort: Unknown load balancer: '%s'!\n", balancer);
+      CkExit();
+    }
+    else  // overwrite defaultCreate.
+      lbFn = fn;
+  }
+  // NullLB is the default
+  if (!lbFn) lbFn = CreateNullLB;
+  (lbFn)();
+  if (CkpvAccess(doSimulation)) {
+    CmiPrintf("Charm++> Entering Load Balancer Simulation Mode ... \n");
+    CProxy_LBDatabase(lbdb).ckLocalBranch()->StartLB();
+  }
+*/
+}
+
+
 void _loadbalancerInit()
 {
   CkpvInitialize(int, lbdatabaseInited);
index 6288df9018aeffc25a2ef7a456ca0c069aeace18..272fbe90b59364138d08f56fa017a776804c149c 100644 (file)
@@ -7,7 +7,7 @@ module LBDatabase {
     entry LBDBInit(CkArgMsg *m);
   };
 
-  group LBDatabase {
+  group [migratable] LBDatabase {
     entry void LBDatabase(void);  
   };
 
index 083d0dcf722e92321a2ec1a768496aaacfc6a3f9..3797ad970f5c6bfed5cefff0e516cbdf43b5cf24 100644 (file)
@@ -39,27 +39,31 @@ void _LBDBInit();
 class LBDBInit : public Chare {
   public:
     LBDBInit(CkArgMsg*);
-    LBDBInit(CkMigrateMessage *m) {}
+    LBDBInit(CkMigrateMessage *m):Chare(m) {}
 };
 
 
-class LBDatabase : public Group {
+class LBDatabase : public IrrGroup {
 public:
   static int manualOn;
 public:
   LBDatabase(void) {
-    myLDHandle = LDCreate();  
+    myLDHandle = LDCreate();
     CkpvAccess(lbdatabaseInited) = 1;
 #if CMK_LBDB_ON
     if (manualOn) TurnManualLBOn();
 #endif
   };
-  LBDatabase(CkMigrateMessage *m) { myLDHandle = LDCreate(); }
+
+  LBDatabase(CkMigrateMessage *m);
+  
   inline static LBDatabase * Object() { return CkpvAccess(lbdatabaseInited)?(LBDatabase *)CkLocalBranch(lbdb):NULL; }
 #if CMK_LBDB_ON
   inline LBDB *getLBDB() {return (LBDB*)(myLDHandle.handle);}
 #endif
 
+  void pup(PUP::er& p){ IrrGroup::pup(p); }
+
   /*
    * Calls from object managers to load database
    */
index f120cd194bb841c1757c12f01d85e4dd1a25ba29..7a04e4c14668a7f1aece6aa6aa3b47b3da54f796 100644 (file)
@@ -2,7 +2,7 @@ module MetisLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group MetisLB : CentralLB {
+group [migratable] MetisLB : CentralLB {
   entry void MetisLB(void);  
 };
 
index e713509662daead52b929eb4545aecbe756f9ba7..d19a3d32fabcbbaff38bf4f0ba65e5bc9c252742 100644 (file)
@@ -21,7 +21,7 @@ void CreateMetisLB();
 class MetisLB : public CentralLB {
 public:
   MetisLB();
-  MetisLB(CkMigrateMessage *m) {}
+  MetisLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index 42a7b800342c5f5dcc6ba9e0785e4a38f3bdafae..b3b475921614f43b769d024618b3e150f1d8b04c 100644 (file)
@@ -10,7 +10,7 @@ message NLBStatsMsg {
   LDCommData commData[];
 };
 
-group NborBaseLB: BaseLB {
+group [migratable] NborBaseLB: BaseLB {
   entry void NborBaseLB(void);  
   entry void ReceiveStats(NLBStatsMsg*);
   entry void ResumeClients(void);
index 1be9e1366fa32ae3c272f952f7ee048920d422d1..e2956d8f967db47866a4d4a46e7c41c96a801c35 100644 (file)
@@ -29,7 +29,7 @@ class NborBaseLB : public CBase_NborBaseLB
 {
 public:
   NborBaseLB();
-  NborBaseLB(CkMigrateMessage *m) {}
+  NborBaseLB(CkMigrateMessage *m):CBase_NborBaseLB(m) {}
   ~NborBaseLB();
   static void staticAtSync(void*);
   void AtSync(void); // Everything is at the PE barrier
index cb321b6e8210a11caf15a6c42cd4f0538f66a5e3..3b66965cf3ba1cdfe891a11ae6bbdaead08043b0 100644 (file)
@@ -2,7 +2,7 @@ module NeighborLB {
 
 extern module NborBaseLB;
 initcall void lbinit(void);
-group NeighborLB : NborBaseLB {
+group [migratable] NeighborLB : NborBaseLB {
   entry void NeighborLB(void);  
 };
 
index e923555823c30c4d76d6fe004afd3674c3e013d1..c16b17de1c9495c6a65b8bba7cebe507f359bf6b 100644 (file)
@@ -23,7 +23,7 @@ void CreateNeighborLB();
 class NeighborLB : public NborBaseLB {
 public:
   NeighborLB();
-  NeighborLB(CkMigrateMessage *m) {}
+  NeighborLB(CkMigrateMessage *m):NborBaseLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step) { return CmiTrue; };
   virtual int max_neighbors() {
index 6be8ccff4e0abfc17b49dea752120c9d8754a4ff..2b7e5511d4e08c648f387a1184a3de67e1364ed4 100644 (file)
@@ -4,7 +4,7 @@ extern module LBDatabase;
 extern module BaseLB;
 initcall void initNullLB(void);
 
-group NullLB: BaseLB {
+group [migratable] NullLB: BaseLB {
   entry void NullLB(void);  
   entry void migrationsDone(void);
 };
index adb6b1efeb4db607076c374c13217999febfe1d5..833d56b069b6fd421c581667e79ea6d101987744 100644 (file)
@@ -28,7 +28,7 @@ class NullLB : public CBase_NullLB
   void init(void);
 public:
   NullLB() {init(); lbname="NullLB";}
-  NullLB(CkMigrateMessage *m) {init();}
+  NullLB(CkMigrateMessage *m):CBase_NullLB(m) {init();}
   ~NullLB();
 
   static void staticAtSync(void*);
index 6a004d1f5ddf0c450419eed42c897220c56fa6a7..0a5c6d33adfcae8584ef5e94a01156fc7ed42e8e 100644 (file)
@@ -73,7 +73,7 @@ public:
 
 public:
   OrbLB();
-  OrbLB(CkMigrateMessage *m) {}
+  OrbLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index 64dc4057effa49a7da9daeb122ab207249292203..c7d976245aeaec6e246cbaa1eb9dc6f20b7fc37c 100644 (file)
@@ -2,7 +2,7 @@ module RandCentLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group RandCentLB : CentralLB {
+group [migratable] RandCentLB : CentralLB {
   entry void RandCentLB(void);  
 };
 
index 7ebe3024f8c078087387764c1daa260ef1051bcd..3ac2ddcc8cc60655e4109f4439f7b9f035e2d27e 100644 (file)
@@ -21,7 +21,7 @@ void CreateRandCentLB();
 class RandCentLB : public CentralLB {
 public:
   RandCentLB();
-  RandCentLB(CkMigrateMessage *m) {}
+  RandCentLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index de0948fc018d0ce62b43aab83bf303d052c67baf..79f024a110c900629e4460b928bd44d7aac41c3e 100644 (file)
@@ -2,7 +2,7 @@ module RandRefLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group RandRefLB : CentralLB {
+group [migratable] RandRefLB : CentralLB {
   entry void RandRefLB(void);  
 };
 
index 948a8e16b3976030cafcd17d3ac1042369703436..91541cb1cc4cf6e9db3763ba0b55b125647bf0a9 100644 (file)
@@ -21,7 +21,7 @@ void CreateRandRefLB();
 class RandRefLB : public CentralLB {
 public:
   RandRefLB();
-  RandRefLB(CkMigrateMessage *m) {}
+  RandRefLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index c55051fecbca4efa7081aed1a08371c86ba94079..e98eb5a4ad277cf606a2c4a487879080f8266a9a 100644 (file)
@@ -2,7 +2,7 @@ module RecBisectBfLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group RecBisectBfLB : CentralLB {
+group [migratable] RecBisectBfLB : CentralLB {
   entry void RecBisectBfLB(void);  
 };
 
index 228de11cdb5e04847fa30f7840a3118ef135a672..f7ce332393e604de21c14cede83ec5ed2911fa63 100644 (file)
@@ -41,7 +41,7 @@ typedef struct {
 class RecBisectBfLB : public CentralLB {
 public:
   RecBisectBfLB();
-  RecBisectBfLB(CkMigrateMessage *m) {}
+  RecBisectBfLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index 9711dc71b502df313f0de83ce6aa2eaaf9e1048b..05354bf7d440a1b4389208eacb6528d9c8263e0d 100644 (file)
@@ -2,7 +2,7 @@ module RefineLB {
 
 extern module CentralLB;
 initcall void lbinit(void);
-group RefineLB : CentralLB {
+group [migratable] RefineLB : CentralLB {
   entry void RefineLB(void);  
 };
 
index 8b460ee5ee08b6952380412fa4a0d51ae94ed3aa..2f5f48520f4b11bf8ab9939f91781ab47af70860 100644 (file)
@@ -40,7 +40,7 @@ public:
 
 public:
   RefineLB();
-  RefineLB(CkMigrateMessage *m) {}
+  RefineLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
   LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
index f7f3286cebe35824b3838bb7935f2b3e3e2495dd..da50a18881dd6a385bbdc64a439f31da69d5d725 100644 (file)
@@ -7,7 +7,7 @@ readonly CkGroupID wslb;
 
 message WSLBStatsMsg;
 
-group WSLB: BaseLB {
+group [migratable] WSLB: BaseLB {
   entry void WSLB(void);  
   entry void ReceiveStats(WSLBStatsMsg*);
   entry void ResumeClients(void);
index 0f910bfc51c91971bf7f3157022048e3e3b71fde..d497d06e9806665608468f0d0448fafd185fe2cf 100644 (file)
@@ -24,7 +24,7 @@ class WSLB : public CBase_WSLB
 {
 public:
   WSLB();
-  WSLB(CkMigrateMessage *m) {}
+  WSLB(CkMigrateMessage *m):CBase_WSLB(m) {}
   ~WSLB();
   static void staticAtSync(void*);
   void AtSync(void); // Everything is at the PE barrier
index 30de30c380c771bd87b28744e0ddb58718bb1451..121a50fb4ba78ba8ca0ec12f8a726421e9c038cd 100644 (file)
@@ -9,7 +9,7 @@ module TraceSummary {
   
   readonly CkGroupID traceSummaryGID;
 
-  group TraceSummaryBOC {
+  group [migratable] TraceSummaryBOC {
     entry TraceSummaryBOC(void);
     entry void askSummary();
     entry void sendSummaryBOC(int traced, int n, BinEntry s[n]);
index 52a405c76ac4ac70249b9d3fe7813643d7c3b2a4..88809dea89fba22e2b0cd16e6e938dabfa719488 100644 (file)
@@ -8,7 +8,7 @@ class TraceSummaryInit : public Chare {
   TraceSummaryInit(CkArgMsg*) {
     traceSummaryGID = CProxy_TraceSummaryBOC::ckNew();
   }
-  TraceSummaryInit(CkMigrateMessage *m) {}
+  TraceSummaryInit(CkMigrateMessage *m):Chare(m) {}
 };
 
 class TraceSummaryBOC : public CBase_TraceSummaryBOC {
@@ -19,7 +19,7 @@ private:
   int nTracedPEs;
 public:
   TraceSummaryBOC(void): count(0), bins(NULL), nBins(0), nTracedPEs(0) {};
-  TraceSummaryBOC(CkMigrateMessage *m) {};
+  TraceSummaryBOC(CkMigrateMessage *m):CBase_TraceSummaryBOC(m) {};
   void askSummary();
   void sendSummaryBOC(int traced, int n, BinEntry *b);
 private:
index 8e04551a8e8f6add6e079ad111cab52b21313dd3..5f7937d904dde77cdd579e922d1f94b8bf8ff78f 100644 (file)
@@ -116,7 +116,7 @@ CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h queueing.h
       memory-isomalloc.h debug-conv.h debug-charm.h conv-autoconfig.h \
       conv-common.h conv-mach.h conv-mach.sh \
       CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h CkReduction.decl.h CkArrayReductionMgr.decl.h\
-      CkFutures.decl.h LBDatabase.decl.h CentralLB.decl.h NullLB.decl.h \
+      CkFutures.decl.h LBDatabase.decl.h CentralLB.decl.h NullLB.decl.h CkCheckpoint.decl.h\
       RandCentLB.decl.h RecBisectBfLB.decl.h BaseLB.decl.h \
       MetisLB.decl.h DummyLB.decl.h RefineLB.decl.h OrbLB.decl.h \
       HeapCentLB.decl.h NborBaseLB.decl.h NeighborLB.decl.h \
@@ -137,7 +137,7 @@ UTILHEADERS=pup.h pupf.h pup_c.h pup_stl.h pup_toNetwork4.h \
 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
          ckfutures.h \
          ckcallback.h CkCallback.decl.h ckcallback-ccs.h ckarrayreductionmgr.h \
-         ckarray.h cklocation.h ckreduction.h \
+         ckarray.h cklocation.h ckreduction.h ckcheckpoint.h\
          readonly.h charisma.h \
          $(UTILHEADERS) \
          tempo.h waitqd.h LBDatabase.h lbdb.h \
@@ -170,7 +170,11 @@ headerlinks: dirs+sources Makefile $(ALLHEADERS)
 
 dirs+sources:
        rm -f .gdir
+       echo HHH $(PWD)
        (cd .. ; basename "`pwd`" | sed -e 's@-.*@@')   > .gdir
+       echo HHH $(PWD)
+       pwd
+       cat .gdir
        find . -type l -exec rm {} \;
        rm -rf QuickThreads
        rm -rf libs
@@ -179,21 +183,27 @@ dirs+sources:
        rm -rf ../pgms
        rm -rf ../doc ; ln -s ../doc ../doc
        ../../src/scripts/gatherflat ../../src/scripts .
+       cat .gdir
        ./gatherflat ../../src/conv-core        .
        ./gatherflat ../../src/conv-ldb         .
+       cat .gdir
        ./gatherflat ../../src/conv-ccs         .
        ./gatherflat ../../src/conv-perf        .
        ./gatherflat ../../src/ck-core          .
+       cat .gdir
        ./gatherflat ../../src/util             .
        ./gatherflat ../../src/ck-perf          .
        ./gatherflat ../../src/ck-ldb           .
+       cat .gdir
        ./gatherflat ../../src/langs/simplemsg  .
        ./gatherflat ../../src/langs/pvmc       .
        ./gatherflat ../../src/langs/bluegene   .
        ./gatherflat ../../src/langs/f90charm   .
+       cat .gdir
        ./gatherflat ../../src/xlat-i           .
        ./gatherflat ../../src/xlatcpm          .
        ./gathertree ../../src/QuickThreads QuickThreads
+       cat .gdir
        ./gathertree ../../src/libs libs
        ./gathertree ../../src/arch/util      .
        ./gathertree ../../src/langs langs
@@ -430,7 +440,7 @@ CK_LIBS_CORE=libck.a
 
 LIBCK_CORE=init.o register.o qd.o ck.o main.o msgalloc.o ckfutures.o \
            debug-message.o ckcallback.o cklocation.o ckarray.o ckreduction.o ckarrayreductionmgr.o\
-           tempo.o waitqd.o LBDatabase.o lbdb.o charisma.o \
+           tempo.o waitqd.o LBDatabase.o lbdb.o charisma.o ckcheckpoint.o\
            LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o \
           BaseLB.o CentralLB.o NborBaseLB.o WSLB.o ObjGraph.o graph.o  \
            Refiner.o bitvecset.o Set.o heap.o CommLBHeap.o NullLB.o \
@@ -499,6 +509,12 @@ CkReduction.decl.h CkReduction.def.h: ckreduction.ci charmxi
 ckreduction.o: ckreduction.C $(CKHEADERS)
        $(CHARMC) -o ckreduction.o ckreduction.C
 
+CkCheckpoint.decl.h CkCheckpoint.def.h: ckcheckpoint.ci charmxi
+       $(CHARMC) ckcheckpoint.ci
+
+ckcheckpoint.o: ckcheckpoint.C $(CKHEADERS)
+       $(CHARMC) -o ckcheckpoint.o ckcheckpoint.C
+
 CkMarshall.decl.h CkMarshall.def.h : ckmarshall.ci charmxi
        $(CHARMC) ckmarshall.ci
 
@@ -573,7 +589,7 @@ graph.o: graph.c
 bitvecset.o: bitvecset.c bitvecset.h
        $(CHARMC) -o bitvecset.o bitvecset.c
 
-Set.o: Set.C $(CKHEADERS) Set.h elements.h 
+Set.o: Set.C $(CKHEADERS) Set.h elements.h
        $(CHARMC) -o Set.o Set.C
 
 heap.o: heap.C $(CKHEADERS) elements.h heap.h