some cleanup and added some comments.
authorLixia Shi <lixiashi@uiuc.edu>
Fri, 19 Dec 2003 06:48:47 +0000 (06:48 +0000)
committerLixia Shi <lixiashi@uiuc.edu>
Fri, 19 Dec 2003 06:48:47 +0000 (06:48 +0000)
src/ck-core/ckmemcheckpoint.C
src/ck-core/ckmemcheckpoint.ci
src/ck-core/ckmemcheckpoint.h

index 966ed422071d393236e89764eeba9056a7b649e5..8e324fa1045568e9bc6cadfff8bc983e1c05bb07 100644 (file)
@@ -23,6 +23,10 @@ Restart phase contains two steps:
 2. CkMemCheckPT gets control and recover array elements and reset all
    states to be consistent.
 
+TODO:
+ checkpoint scheme can be reimplemented based on per processor scheme;
+ restart phase should restore/reset group table, etc on all processors, thus flushStates() can be eliminated.
+
 */
 
 #include "charm++.h"
@@ -112,12 +116,10 @@ CkMemCheckPT::CkMemCheckPT()
     CkPrintf("CkMemCheckPT disabled!\n");
   inRestarting = 0;
   recvCount = peCount = 0;
-  qdCallback = NULL;
 }
 
 CkMemCheckPT::~CkMemCheckPT()
 {
-  if (qdCallback) delete qdCallback;
 }
 
 void CkMemCheckPT::pup(PUP::er& p) 
@@ -130,7 +132,6 @@ void CkMemCheckPT::pup(PUP::er& p)
   p|cpCallback;                        // store callback
   if (p.isUnpacking()) {
     recvCount = peCount = 0;
-    qdCallback = NULL;
   }
 }
 
@@ -460,7 +461,7 @@ void CkMemCheckPT::finishUp()
 }
 
 // called only on 0
-void CkMemCheckPT::quiescence(CkCallback cb)
+void CkMemCheckPT::quiescence(CkCallback &cb)
 {
   static int pe_count = 0;
   pe_count ++;
@@ -578,6 +579,13 @@ void CkMemRestart(){
    cur_restart_phase=-1;
 }
 
+// can be called in other files
+// return true if it is in restarting
+int CkInRestart()
+{
+  return CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch()->inRestarting;
+}
+
 /*****************************************************************************
                 module initialization
 *****************************************************************************/
@@ -592,12 +600,6 @@ public:
   }
 };
 
-// return true if it is in restarting
-int CkInRestart()
-{
-  return CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch()->inRestarting;
-}
-
 // initproc
 void CkRegisterRestartHandler( )
 {
index f6364a1b4f681b0f4366e69d28bfa2cbb78740f3..4ba2e81ba80d72046c1bbac1d57a0fd4b257a5c6 100644 (file)
@@ -15,17 +15,19 @@ module CkMemCheckpoint {
   group [migratable] CkMemCheckPT {
         entry CkMemCheckPT(void);
        entry void createEntry(CkArrayID, CkGroupID, CkArrayIndexMax, int);
+       // checkpointing
         entry void doItNow(int spe, CkCallback &);  //checkpointing
        entry void recvData(CkArrayCheckPTMessage *);
        entry void recvProcData(CkProcCheckPTMessage *);
+       entry void cpFinish();
+       // restart
         entry void restart(int);
        entry void resetReductionMgr();
        entry void removeArrayElements();
-       entry void cpFinish();
        entry void recoverBuddies();
        entry void recoverArrayElements();
        entry void finishUp();
-       entry void quiescence(CkCallback);
+       entry void quiescence(CkCallback&);
         entry void inmem_restore(CkArrayCheckPTMessage *m);
   };
 
index 41d959d3570c24dce718c5379657f345cdd9ca87..a5601d27b0e7942f1689b90c8f5ce33717330fdf 100644 (file)
@@ -64,18 +64,16 @@ public:
   void cpFinish();
   void recoverBuddies();
   void recoverArrayElements();
-  void quiescence(CkCallback);
+  void quiescence(CkCallback &);
   void resetReductionMgr();
   void finishUp();
   void inmem_restore(CkArrayCheckPTMessage *m);
   void resetLB(int diepe);
 public:
   static CkCallback  cpCallback;
-//  static CkCallback  *restartCallback;
 
   int inRestarting;
 private:
-  CkCallback  *qdCallback;
   CkVec<CkMemCheckPTInfo *> ckTable;
 
   int recvCount, peCount;