Ignore:
Timestamp:
07/24/15 16:40:07 (9 years ago)
Author:
rlacroix
Message:

Properly release all MPI resources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/client.cpp

    r597 r655  
    1717    MPI_Comm CClient::intraComm ; 
    1818    MPI_Comm CClient::interComm ; 
     19    std::list<MPI_Comm> CClient::contextInterComms; 
    1920    int CClient::serverLeader ; 
    2021    bool CClient::is_MPI_Initialized ; 
     
    128129        { 
    129130          if (!is_MPI_Initialized) oasis_init(codeId) ; 
    130           oasis_get_localcomm(intraComm) ; 
    131         } 
    132         else MPI_Comm_dup(localComm,&intraComm) ; 
     131          oasis_get_localcomm(localComm) ; 
     132        } 
     133        MPI_Comm_dup(localComm,&intraComm) ; 
     134 
    133135        CTimer::get("XIOS").resume() ; 
    134136        CTimer::get("XIOS init").resume() ; 
     
    191193 
    192194        context->initClient(contextComm,contextInterComm) ; 
     195 
     196        contextInterComms.push_back(contextInterComm); 
     197        MPI_Comm_free(&inter); 
    193198      } 
    194199      else 
     
    206211        // Finally, we should return current context to context client 
    207212        CContext::setCurrent(id); 
    208 //        context->initServer(contextComm,contextInterComm) ; 
     213 
     214        contextInterComms.push_back(contextInterComm); 
    209215      } 
    210216    } 
     
    223229      } 
    224230 
    225      CTimer::get("XIOS finalize").suspend() ; 
    226      CTimer::get("XIOS").suspend() ; 
     231      for (std::list<MPI_Comm>::iterator it = contextInterComms.begin(); it != contextInterComms.end(); it++) 
     232        MPI_Comm_free(&(*it)); 
     233      MPI_Comm_free(&interComm); 
     234      MPI_Comm_free(&intraComm); 
     235 
     236      CTimer::get("XIOS finalize").suspend() ; 
     237      CTimer::get("XIOS").suspend() ; 
    227238 
    228239      if (!is_MPI_Initialized) 
Note: See TracChangeset for help on using the changeset viewer.