fix bug for ending and clean up commits
authorNikhil Jain <nikhil@illinois.edu>
Sat, 22 Dec 2012 03:31:18 +0000 (03:31 +0000)
committerNikhil Jain <nikhil@illinois.edu>
Sat, 22 Dec 2012 03:31:18 +0000 (03:31 +0000)
src/arch/mpi/machine.c
src/ck-core/cklocation.C
src/ck-core/ckmemcheckpoint.C
src/ck-core/cksection.h

index c04604be98d3c9f8a2fde3f4d2371737b3d87cc0..3039388e3f77cd1e8b0c9c8fb7603bb15de1cc3f 100644 (file)
@@ -198,6 +198,7 @@ static void reportMsgHistogramInfo();
 
 #endif /* end of MPI_POST_RECV defined */
 
 
 #endif /* end of MPI_POST_RECV defined */
 
+CpvDeclare(int, crashedRank);
 /* to avoid MPI's in order delivery, changing MPI Tag all the time */
 #define TAG     1375
 #if MPI_POST_RECV
 /* to avoid MPI's in order delivery, changing MPI Tag all the time */
 #define TAG     1375
 #if MPI_POST_RECV
@@ -307,6 +308,7 @@ typedef struct msg_list {
     struct msg_list *next;
     int size, destpe, mode;
     MPI_Request req;
     struct msg_list *next;
     int size, destpe, mode;
     MPI_Request req;
+    int dstrank;
 } SMSG_LIST;
 
 CpvStaticDeclare(SMSG_LIST *, sent_msgs);
 } SMSG_LIST;
 
 CpvStaticDeclare(SMSG_LIST *, sent_msgs);
@@ -451,6 +453,7 @@ static CmiCommHandle MPISendOneMsg(SMSG_LIST *smsg) {
 #else
        dstrank=node;
 #endif
 #else
        dstrank=node;
 #endif
+  smsg->dstrank = dstrank;
     START_TRACE_SENDCOMM(msg)
     if (MPI_SUCCESS != MPI_Isend((void *)msg,size,MPI_BYTE,dstrank,TAG,charmComm,&(smsg->req)))
         CmiAbort("MPISendOneMsg: MPI_Isend failed!\n");
     START_TRACE_SENDCOMM(msg)
     if (MPI_SUCCESS != MPI_Isend((void *)msg,size,MPI_BYTE,dstrank,TAG,charmComm,&(smsg->req)))
         CmiAbort("MPISendOneMsg: MPI_Isend failed!\n");
@@ -512,6 +515,11 @@ static size_t CmiAllAsyncMsgsSent(void) {
         done = 0;
         if (MPI_SUCCESS != MPI_Test(&(msg_tmp->req), &done, &sts))
             CmiAbort("CmiAllAsyncMsgsSent: MPI_Test failed!\n");
         done = 0;
         if (MPI_SUCCESS != MPI_Test(&(msg_tmp->req), &done, &sts))
             CmiAbort("CmiAllAsyncMsgsSent: MPI_Test failed!\n");
+        if(msg_tmp->dstrank == CpvAccess(crashedRank)){
+          //CmiPrintf("[%d][%d] msg to crashed rank\n",CmiMyPartition(),CmiMyPe());
+          //CmiAbort("unexpected send");
+          done = 1;
+        }
         if (!done)
             return 0;
         msg_tmp = msg_tmp->next;
         if (!done)
             return 0;
         msg_tmp = msg_tmp->next;
@@ -562,6 +570,9 @@ static void CmiReleaseSentMessages(void) {
 #endif
         if (MPI_Test(&(msg_tmp->req), &done, &sts) != MPI_SUCCESS)
             CmiAbort("CmiReleaseSentMessages: MPI_Test failed!\n");
 #endif
         if (MPI_Test(&(msg_tmp->req), &done, &sts) != MPI_SUCCESS)
             CmiAbort("CmiReleaseSentMessages: MPI_Test failed!\n");
+        if (msg_tmp->dstrank == CpvAccess(crashedRank)){
+          done = 1;
+        }
         if (done) {
             MACHSTATE2(3,"CmiReleaseSentMessages release one %d to %d", CmiMyPe(), msg_tmp->destpe);
             CpvAccess(MsgQueueLen)--;
         if (done) {
             MACHSTATE2(3,"CmiReleaseSentMessages release one %d to %d", CmiMyPe(), msg_tmp->destpe);
             CpvAccess(MsgQueueLen)--;
@@ -1120,7 +1131,9 @@ void LrtsDrainResources() {
     }
 #endif
 #if CMK_MEM_CHECKPOINT || CMK_MESSAGE_LOGGING
     }
 #endif
 #if CMK_MEM_CHECKPOINT || CMK_MESSAGE_LOGGING
-    if (CmiMyPe() == 0) mpi_end_spare();
+    if (CmiMyPe() == 0&&CmiMyPartition()==0){ 
+      mpi_end_spare();
+    }
 #endif
     MACHSTATE(2, "Machine exit barrier begin {");
     START_EVENT();
 #endif
     MACHSTATE(2, "Machine exit barrier begin {");
     START_EVENT();
@@ -1368,13 +1381,11 @@ void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID) {
     if (*myNodeID >= num_workpes) {    /* is spare processor */
       //if isomalloc_sync call mpi_barrier
                if(CmiGetArgFlag(largv,"+isomalloc_sync")){
     if (*myNodeID >= num_workpes) {    /* is spare processor */
       //if isomalloc_sync call mpi_barrier
                if(CmiGetArgFlag(largv,"+isomalloc_sync")){
-                 CmiPrintf("wp before mpi barrier\n");
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
-                 CmiPrintf("wp after mpi barrier\n");
-         }
+           }
          MPI_Status sts;
       int vals[2];
       MPI_Recv(vals,2,MPI_INT,MPI_ANY_SOURCE,FAIL_TAG, charmComm,&sts);
          MPI_Status sts;
       int vals[2];
       MPI_Recv(vals,2,MPI_INT,MPI_ANY_SOURCE,FAIL_TAG, charmComm,&sts);
@@ -1633,6 +1644,8 @@ void LrtsPreCommonInit(int everReturn) {
     waitIrecvListHead->next = NULL;
 #endif
 #endif
     waitIrecvListHead->next = NULL;
 #endif
 #endif
+    CpvInitialize(int, crashedRank);
+    CpvAccess(crashedRank) = -1;
 }
 
 void LrtsPostCommonInit(int everReturn) {
 }
 
 void LrtsPostCommonInit(int everReturn) {
@@ -1922,6 +1935,7 @@ void mpi_end_spare()
     int i;
     for (i=nextrank; i<total_pes; i++) {
         int vals[2] = {-1,-1};
     int i;
     for (i=nextrank; i<total_pes; i++) {
         int vals[2] = {-1,-1};
+        CmiPrintf("end spare send to rank %d\n",i);
         MPI_Send((void *)vals,2,MPI_INT,i,FAIL_TAG,charmComm);
     }
 }
         MPI_Send((void *)vals,2,MPI_INT,i,FAIL_TAG,charmComm);
     }
 }
@@ -1932,7 +1946,7 @@ int find_spare_mpirank(int pe,int partition)
       CmiAbort("Charm++> No spare processor available.");
     }
        int newpe = CmiGetPeGlobal(pe,partition);
       CmiAbort("Charm++> No spare processor available.");
     }
        int newpe = CmiGetPeGlobal(pe,partition);
-       CmiPrintf("[%d] set the rank of %d to %d\n",CmiGetPeGlobal(CmiMyPe(),CmiMyPartition()),newpe,nextrank);
+       CpvAccess(crashedRank) = newpe;
     petorank[newpe] = nextrank;
     nextrank++;
     return nextrank-1;
     petorank[newpe] = nextrank;
     nextrank++;
     return nextrank-1;
index 4db992347e673c443c6799db187ff9c1c6251d60..641a3be57b337a62b937be6798e131a8df59c047 100644 (file)
@@ -1292,7 +1292,6 @@ void CkMigratable::ResumeFromChkp(){
 
 void CkMigratable::recvChkpIter(void * _iter){
        if(usesChkpAtSync){
 
 void CkMigratable::recvChkpIter(void * _iter){
        if(usesChkpAtSync){
-               CkPrintf("[%d] recv chkp iter\n",CkMyPe());
                int iter = *(int *)_iter;
                nextChkpIter = iter;
                nextChkpDecided = true;
                int iter = *(int *)_iter;
                nextChkpIter = iter;
                nextChkpDecided = true;
index badc0422ea60802e966fca9e41d59da9f067e586..3d4bf91b10db27cb83b71ec3838e664200a4e933 100644 (file)
@@ -751,7 +751,6 @@ void CkMemCheckPT::doneComparison(bool ret){
                _ret = 1;
        }
        inCheckpointing = 0;
                _ret = 1;
        }
        inCheckpointing = 0;
-     CkPrintf("[%d][%d] contribute %d \n", CmiMyPartition(),CkMyPe(),_ret);
        CkCallback cb(CkReductionTarget(CkMemCheckPT,doneRComparison),thisProxy);
        contribute(sizeof(int),&_ret,CkReduction::sum_int,cb);
 }
        CkCallback cb(CkReductionTarget(CkMemCheckPT,doneRComparison),thisProxy);
        contribute(sizeof(int),&_ret,CkReduction::sum_int,cb);
 }
@@ -1582,11 +1581,6 @@ bool compare(char * buf1, char *buf2){
                mgr->resume(idx,pchecker,CmiFalse,CmiFalse,CmiFalse);
 //             CkPrintf("------[%d][%d]finish element %d\n",CmiMyPartition(),CkMyPe(),i);
        }
                mgr->resume(idx,pchecker,CmiFalse,CmiFalse,CmiFalse);
 //             CkPrintf("------[%d][%d]finish element %d\n",CmiMyPartition(),CkMyPe(),i);
        }
-       if(pchecker.getResult()){
-               CkPrintf("------[%d][%d]pass result\n",CmiMyPartition(),CkMyPe());
-       }else{
-               CkPrintf("------[%d][%d] hasn't passed result\n",CmiMyPartition(),CkMyPe());
-       }
        return pchecker.getResult();
 }
 
        return pchecker.getResult();
 }
 
@@ -1645,7 +1639,6 @@ static void replicaDieBcastHandler(char *msg){
 }
 
 static void recoverRemoteProcDataHandler(char *msg){
 }
 
 static void recoverRemoteProcDataHandler(char *msg){
-   CmiPrintf("[%d] ----- recoverRemoteProcDataHandler  start at %f\n", CkMyPe(), CkWallTimer());
    envelope *env = (envelope *)msg;
    CkUnpackMessage(&env);
    CkCheckPTMessage* procMsg = (CkCheckPTMessage *)(EnvToUsr(env));
    envelope *env = (envelope *)msg;
    CkUnpackMessage(&env);
    CkCheckPTMessage* procMsg = (CkCheckPTMessage *)(EnvToUsr(env));
@@ -1669,7 +1662,6 @@ static void recoverRemoteProcDataHandler(char *msg){
    CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch()->resetLB(CkMyPe());
    CKLOCMGR_LOOP(mgr->startInserting(););
    
    CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch()->resetLB(CkMyPe());
    CKLOCMGR_LOOP(mgr->startInserting(););
    
-   CmiPrintf("[%d] ----- recoverRemoteProcDataHandler  done at %f\n", CkMyPe(), CkWallTimer());
    CpvAccess(recvdProcChkp) =1;
        if(CpvAccess(recvdArrayChkp)==1){
                _resume_charm_message();
    CpvAccess(recvdProcChkp) =1;
        if(CpvAccess(recvdArrayChkp)==1){
                _resume_charm_message();
@@ -1681,8 +1673,6 @@ static void recoverRemoteProcDataHandler(char *msg){
 }
 
 static void recoverRemoteArrayDataHandler(char *msg){
 }
 
 static void recoverRemoteArrayDataHandler(char *msg){
-  if(CkMyPe()==CpvAccess(_crashedNode)) 
-  CmiPrintf("[%d] ----- recoverRemoteArrayDataHandler  start at %f\n", CkMyPe(), CkWallTimer());
    envelope *env = (envelope *)msg;
    CkUnpackMessage(&env);
    CkCheckPTMessage* chkpMsg = (CkCheckPTMessage *)(EnvToUsr(env));
    envelope *env = (envelope *)msg;
    CkUnpackMessage(&env);
    CkCheckPTMessage* chkpMsg = (CkCheckPTMessage *)(EnvToUsr(env));
@@ -1987,9 +1977,7 @@ void buddyDieHandler(char *msg)
    notify_crash(diepe);
    // send message to crash pe to let it restart
    CkMemCheckPT *obj = CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch();
    notify_crash(diepe);
    // send message to crash pe to let it restart
    CkMemCheckPT *obj = CProxy_CkMemCheckPT(ckCheckPTGroupID).ckLocalBranch();
-   CkPrintf("[%d] finding newrank\n",CkMyPe());
    int newrank = find_spare_mpirank(diepe,CmiMyPartition());
    int newrank = find_spare_mpirank(diepe,CmiMyPartition());
-   CkPrintf("[%d] restart crashed node %d newrank %d\n",CkMyPe(),diepe,newrank);
    int buddy = obj->BuddyPE(CmiMyPe());
    //if (CmiMyPe() == obj->BuddyPE(diepe))  {
    if (buddy == diepe)  {
    int buddy = obj->BuddyPE(CmiMyPe());
    //if (CmiMyPe() == obj->BuddyPE(diepe))  {
    if (buddy == diepe)  {
index 2d03dfb25b04abe16c737a50fd6c2ea5a44a33b5..cf43adfdbabae3104018bda1b9d3f9f843c2b313 100644 (file)
@@ -119,8 +119,6 @@ class CkSectionInfo {
     inline void  set_redNo(int redNo) 
     { 
     //  CmiAssert(info.type==MulticastMsg); 
     inline void  set_redNo(int redNo) 
     { 
     //  CmiAssert(info.type==MulticastMsg); 
-      if(info.type!=MulticastMsg)
-        CkPrintf("[%d] set type %d\n",CkMyPe(),info.type);
       info.sInfo.sCookie.redNo = redNo; 
     }
     inline void* &get_val()   { CmiAssert(info.type==MulticastMsg); return info.sInfo.sCookie.val; }
       info.sInfo.sCookie.redNo = redNo; 
     }
     inline void* &get_val()   { CmiAssert(info.type==MulticastMsg); return info.sInfo.sCookie.val; }