Ignore:
Timestamp:
01/22/19 16:15:03 (5 years ago)
Author:
yushan
Message:

dev on ADA

File:
1 edited

Legend:

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

    r1587 r1638  
    99#include "oasis_cinterface.hpp" 
    1010#include "mpi.hpp" 
     11//#include "mpi_wrapper.hpp" 
    1112#include "timer.hpp" 
    1213#include "buffer_client.hpp" 
     
    1617{ 
    1718 
    18     MPI_Comm CClient::intraComm ; 
    19     MPI_Comm CClient::interComm ; 
    20     std::list<MPI_Comm> CClient::contextInterComms; 
     19    ep_lib::MPI_Comm CClient::intraComm ; 
     20    ep_lib::MPI_Comm CClient::interComm ; 
     21    std::list<ep_lib::MPI_Comm> CClient::contextInterComms; 
    2122    int CClient::serverLeader ; 
    2223    bool CClient::is_MPI_Initialized ; 
     
    2425    StdOFStream CClient::m_infoStream; 
    2526    StdOFStream CClient::m_errorStream; 
    26     MPI_Comm& CClient::getInterComm(void)   { return (interComm); } 
     27    ep_lib::MPI_Comm& CClient::getInterComm(void)   { return (interComm); } 
    2728      
    2829///--------------------------------------------------------------- 
     
    3536 */ 
    3637 
    37     void CClient::initialize(const string& codeId, MPI_Comm& localComm, MPI_Comm& returnComm) 
     38    void CClient::initialize(const string& codeId, ep_lib::MPI_Comm& localComm, ep_lib::MPI_Comm& returnComm) 
    3839    { 
    3940      int initialized ; 
    40       MPI_Initialized(&initialized) ; 
     41      ep_lib::MPI_Initialized(&initialized) ; 
    4142      if (initialized) is_MPI_Initialized=true ; 
    4243      else is_MPI_Initialized=false ; 
     
    4748      { 
    4849// localComm isn't given 
    49         if (localComm == MPI_COMM_NULL) 
     50        if (localComm == EP_COMM_NULL) 
    5051        { 
    5152          if (!is_MPI_Initialized) 
    5253          { 
    53             MPI_Init(NULL, NULL); 
     54            ep_lib::MPI_Init(NULL, NULL); 
    5455          } 
    5556          CTimer::get("XIOS").resume() ; 
     
    6364          int myColor ; 
    6465          int i,c ; 
    65           MPI_Comm newComm ; 
    66  
    67           MPI_Comm_size(CXios::globalComm,&size) ; 
    68           MPI_Comm_rank(CXios::globalComm,&rank_); 
     66          ep_lib::MPI_Comm newComm ; 
     67 
     68          ep_lib::MPI_Comm_size(CXios::globalComm,&size) ; 
     69 
     70          ep_lib::MPI_Comm_rank(CXios::globalComm,&rank_); 
    6971 
    7072          hashAll=new unsigned long[size] ; 
    7173 
    72           MPI_Allgather(&hashClient,1,MPI_LONG,hashAll,1,MPI_LONG,CXios::globalComm) ; 
     74          ep_lib::MPI_Allgather(&hashClient,1,EP_LONG,hashAll,1,EP_LONG,CXios::globalComm) ; 
    7375 
    7476          map<unsigned long, int> colors ; 
     
    9799 
    98100          myColor=colors[hashClient]; 
    99           MPI_Comm_split(CXios::globalComm,myColor,rank_,&intraComm) ; 
     101          ep_lib::MPI_Comm_split(CXios::globalComm,myColor,rank_,&intraComm) ; 
    100102 
    101103          if (CXios::usingServer) 
     
    104106            serverLeader=leaders[hashServer] ; 
    105107            int intraCommSize, intraCommRank ; 
    106             MPI_Comm_size(intraComm,&intraCommSize) ; 
    107             MPI_Comm_rank(intraComm,&intraCommRank) ; 
     108            ep_lib::MPI_Comm_size(intraComm,&intraCommSize) ; 
     109            ep_lib::MPI_Comm_rank(intraComm,&intraCommRank) ; 
    108110            info(50)<<"intercommCreate::client "<<rank_<<" intraCommSize : "<<intraCommSize 
    109111                   <<" intraCommRank :"<<intraCommRank<<"  clientLeader "<< serverLeader<<endl ; 
    110              MPI_Intercomm_create(intraComm, 0, CXios::globalComm, serverLeader, 0, &interComm) ; 
     112             ep_lib::MPI_Intercomm_create(intraComm, 0, CXios::globalComm, serverLeader, 0, &interComm) ; 
    111113             //rank_ = intraCommRank; 
    112114          } 
    113115          else 
    114116          { 
    115             MPI_Comm_dup(intraComm,&interComm) ; 
     117            ep_lib::MPI_Comm_dup(intraComm,&interComm) ; 
    116118          } 
    117119          delete [] hashAll ; 
     
    126128          else 
    127129          { 
    128             MPI_Comm_dup(localComm,&intraComm) ; 
    129             MPI_Comm_dup(intraComm,&interComm) ; 
     130            ep_lib::MPI_Comm_dup(localComm,&intraComm) ; 
     131            ep_lib::MPI_Comm_dup(intraComm,&interComm) ; 
    130132          } 
    131133        } 
     
    135137      { 
    136138        // localComm isn't given 
    137         if (localComm == MPI_COMM_NULL) 
     139        if (localComm == EP_COMM_NULL) 
    138140        { 
    139141          if (!is_MPI_Initialized) oasis_init(codeId) ; 
    140142          oasis_get_localcomm(localComm) ; 
    141143        } 
    142         MPI_Comm_dup(localComm,&intraComm) ; 
     144        ep_lib::MPI_Comm_dup(localComm,&intraComm) ; 
    143145 
    144146        CTimer::get("XIOS").resume() ; 
     
    147149        if (CXios::usingServer) 
    148150        { 
    149           MPI_Status status ; 
    150           MPI_Comm_rank(intraComm,&rank_) ; 
     151          ep_lib::MPI_Status status ; 
     152          ep_lib::MPI_Comm_rank(intraComm,&rank_) ; 
    151153 
    152154          oasis_get_intercomm(interComm,CXios::xiosCodeId) ; 
    153           if (rank_==0) MPI_Recv(&serverLeader,1, MPI_INT, 0, 0, interComm, &status) ; 
    154           MPI_Bcast(&serverLeader,1,MPI_INT,0,intraComm) ; 
    155         } 
    156         else MPI_Comm_dup(intraComm,&interComm) ; 
    157       } 
    158  
    159       MPI_Comm_dup(intraComm,&returnComm) ; 
     155          if (rank_==0) ep_lib::MPI_Recv(&serverLeader,1, EP_INT, 0, 0, interComm, &status) ; 
     156          ep_lib::MPI_Bcast(&serverLeader,1,EP_INT,0,intraComm) ; 
     157        } 
     158        else ep_lib::MPI_Comm_dup(intraComm,&interComm) ; 
     159      } 
     160 
     161      ep_lib::MPI_Comm_dup(intraComm,&returnComm) ; 
    160162    } 
    161163 
     
    168170 * Function is only called by client. 
    169171 */ 
    170     void CClient::registerContext(const string& id, MPI_Comm contextComm) 
     172    void CClient::registerContext(const string& id, ep_lib::MPI_Comm contextComm) 
    171173    { 
    172174      CContext::setCurrent(id) ; 
     
    178180      // Attached mode 
    179181      { 
    180         MPI_Comm contextInterComm ; 
    181         MPI_Comm_dup(contextComm,&contextInterComm) ; 
     182        ep_lib::MPI_Comm contextInterComm ; 
     183        ep_lib::MPI_Comm_dup(contextComm,&contextInterComm) ; 
    182184        CContext* contextServer = CContext::create(idServer); 
    183185 
     
    198200        size_t message_size ; 
    199201        int leaderRank ; 
    200         MPI_Comm contextInterComm ; 
    201  
    202         MPI_Comm_size(contextComm,&size) ; 
    203         MPI_Comm_rank(contextComm,&rank) ; 
    204         MPI_Comm_rank(CXios::globalComm,&globalRank) ; 
     202        ep_lib::MPI_Comm contextInterComm ; 
     203 
     204        ep_lib::MPI_Comm_size(contextComm,&size) ; 
     205        ep_lib::MPI_Comm_rank(contextComm,&rank) ; 
     206        ep_lib::MPI_Comm_rank(CXios::globalComm,&globalRank) ; 
    205207        if (rank!=0) globalRank=0 ; 
    206208 
     
    214216        buffer<<msg ; 
    215217 
    216         MPI_Send((void*)buff,buffer.count(),MPI_CHAR,serverLeader,1,CXios::globalComm) ; 
    217  
    218         MPI_Intercomm_create(contextComm,0,CXios::globalComm,serverLeader,10+globalRank,&contextInterComm) ; 
     218        ep_lib::MPI_Send((void*)buff,buffer.count(),EP_CHAR,serverLeader,1,CXios::globalComm) ; 
     219 
     220        ep_lib::MPI_Intercomm_create(contextComm,0,CXios::globalComm,serverLeader,10+globalRank,&contextInterComm) ; 
    219221        info(10)<<"Register new Context : "<<id<<endl ; 
    220         MPI_Comm inter ; 
    221         MPI_Intercomm_merge(contextInterComm,0,&inter) ; 
    222         MPI_Barrier(inter) ; 
     222        ep_lib::MPI_Comm inter ; 
     223        ep_lib::MPI_Intercomm_merge(contextInterComm,0,&inter) ; 
     224        ep_lib::MPI_Barrier(inter) ; 
    223225 
    224226        context->initClient(contextComm,contextInterComm) ; 
    225227 
    226228        contextInterComms.push_back(contextInterComm); 
    227         MPI_Comm_free(&inter); 
     229        ep_lib::MPI_Comm_free(&inter); 
    228230        delete [] buff ; 
    229231 
     
    251253        int msg=0 ; 
    252254 
    253         MPI_Comm_rank(intraComm,&rank) ; 
     255        ep_lib::MPI_Comm_rank(intraComm,&rank) ; 
    254256        if (rank==0)  
    255257        { 
    256           MPI_Send(&msg,1,MPI_INT,0,5,interComm) ; // tags oasis_endded = 5 
     258          ep_lib::MPI_Send(&msg,1,EP_INT,0,5,interComm) ; // tags oasis_endded = 5 
    257259        } 
    258260 
     
    266268      int msg=0 ; 
    267269 
    268       MPI_Comm_rank(intraComm,&rank) ; 
     270      ep_lib::MPI_Comm_rank(intraComm,&rank) ; 
    269271  
    270272      if (!CXios::isServer) 
    271273      { 
    272         MPI_Comm_rank(intraComm,&rank) ; 
     274        ep_lib::MPI_Comm_rank(intraComm,&rank) ; 
    273275        if (rank==0) 
    274276        { 
    275           MPI_Send(&msg,1,MPI_INT,0,0,interComm) ; 
    276         } 
    277       } 
    278  
    279       for (std::list<MPI_Comm>::iterator it = contextInterComms.begin(); it != contextInterComms.end(); it++) 
    280         MPI_Comm_free(&(*it)); 
    281       MPI_Comm_free(&interComm); 
    282       MPI_Comm_free(&intraComm); 
     277          ep_lib::MPI_Send(&msg,1,EP_INT,0,0,interComm) ; 
     278        } 
     279      } 
     280 
     281      for (std::list<ep_lib::MPI_Comm>::iterator it = contextInterComms.begin(); it != contextInterComms.end(); it++) 
     282        ep_lib::MPI_Comm_free(&(*it)); 
     283      ep_lib::MPI_Comm_free(&interComm); 
     284      ep_lib::MPI_Comm_free(&intraComm); 
    283285 
    284286      CTimer::get("XIOS init/finalize").suspend() ; 
     
    288290      { 
    289291        if (CXios::usingOasis) oasis_finalize(); 
    290         else MPI_Finalize() ; 
     292        else ep_lib::MPI_Finalize() ; 
    291293      } 
    292294       
     
    325327      int size = 0; 
    326328      int rank; 
    327       MPI_Comm_size(CXios::globalComm, &size); 
     329      ep_lib::MPI_Comm_size(CXios::globalComm, &size); 
    328330      while (size) 
    329331      { 
     
    334336      if (CXios::usingOasis) 
    335337      { 
    336         MPI_Comm_rank(CXios::globalComm,&rank); 
     338        ep_lib::MPI_Comm_rank(CXios::globalComm,&rank); 
    337339        fileNameClient << fileName << "_" << std::setfill('0') << std::setw(numDigit) << rank << ext; 
    338340      } 
Note: See TracChangeset for help on using the changeset viewer.