disable CmiBarrier in TimerInit when doing in-mem restart from checkpoint. This won...
authorGengbin Zheng <gzheng@justice.(none)>
Sat, 20 Feb 2010 04:08:19 +0000 (22:08 -0600)
committerGengbin Zheng <gzheng@justice.(none)>
Sat, 20 Feb 2010 04:08:19 +0000 (22:08 -0600)
Add a warning at restart time, when a user's migratable constrctor is not well written.

src/ck-core/ckmemcheckpoint.C
src/conv-core/convcore.c

index 836f09bd64a97082acdb4ae116ee827474bf1ee0..4d2c4a9b779e8f33f3ca14aa1200517f49071802 100644 (file)
@@ -117,6 +117,9 @@ inline int CkMemCheckPT::BuddyPE(int pe)
 #if CMK_MEM_CHECKPOINT
 void ArrayElement::init_checkpt() {
        if (_memChkptOn == 0) return;
+       if (CkInRestarting()) {
+         CkPrintf("[%d] Warning: init_checkpt called during restart, possible bug in migration constructor!\n");
+       }
        // only master init checkpoint
         if (thisArray->getLocMgr()->firstManager->mgr!=thisArray) return;
 
@@ -461,7 +464,7 @@ void CkMemCheckPT::recvProcData(CkProcCheckPTMessage *msg)
 {
   if (CpvAccess(procChkptBuf)) delete CpvAccess(procChkptBuf);
   CpvAccess(procChkptBuf) = msg;
-//CmiPrintf("[%d] CkMemCheckPT::recvProcData report to %d\n", CkMyPe(), msg->reportPe);
+  DEBUGF("[%d] CkMemCheckPT::recvProcData report to %d\n", CkMyPe(), msg->reportPe);
   thisProxy[msg->reportPe].cpFinish();
 }
 
@@ -755,7 +758,7 @@ void CkMemCheckPT::recoverArrayElements()
     inmem_restore(msg);
     count ++;
   }
-//CkPrintf("[%d] recoverArrayElements restore %d objects\n", CkMyPe(), count);
+  DEBUGF("[%d] recoverArrayElements restore %d objects\n", CkMyPe(), count);
 
   if (CkMyPe() == 0)
     CkStartQD(CkCallback(CkIndex_CkMemCheckPT::finishUp(), thisProxy));
index d9d112e803a7fad57b3f312e6158def462b2f261..22846ca83d0af25fdd8b2bee784b5843af5e8414 100644 (file)
@@ -803,10 +803,12 @@ void CmiTimerInit()
   struct rusage ru;
   CpvInitialize(double, inittime_virtual);
 
+#if ! CMK_MEM_CHECKPOINT
   /* try to synchronize calling barrier */
   CmiBarrier();
   CmiBarrier();
   CmiBarrier();
+#endif
 
   gettimeofday(&tv,0);
   inittime_wallclock = (tv.tv_sec * 1.0) + (tv.tv_usec*0.000001);
@@ -815,8 +817,10 @@ void CmiTimerInit()
     (ru.ru_utime.tv_sec * 1.0)+(ru.ru_utime.tv_usec * 0.000001) +
     (ru.ru_stime.tv_sec * 1.0)+(ru.ru_stime.tv_usec * 0.000001);
 
+#if ! CMK_MEM_CHECKPOINT
   CmiBarrier();
 /*  CmiBarrierZero(); */
+#endif
 }
 
 double CmiCpuTimer()