Changeset 179


Ignore:
Timestamp:
04/18/11 17:02:22 (10 years ago)
Author:
hozdoba
Message:
 
Location:
XMLIO_V2/dev/dev_rv
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/Makefile.wk

    r178 r179  
    1616GUI       = no 
    1717NPROC     = 12 
    18 CSUITE    = gnu 
     18CSUITE    = intel 
    1919PFORME    = fedora-wk 
    2020FORTEXT   = .f90 
  • XMLIO_V2/dev/dev_rv/src/xmlio/buffer.hpp

    r152 r179  
    2323 
    2424            typedef struct  buffer_data 
    25             { CBufferDataType type; bool isArray; size_t size; size_t position; 
     25            { CBufferDataType type; bool isArray; StdSize size; StdSize position; 
    2626            } CBufferData; 
    2727 
     
    127127            /// Mutateurs privés /// 
    128128            void setBufferData(const CBufferData & bufdata, StdSize position); 
     129             
    129130         //-------------------------------------------------------------- 
    130131 
  • XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_nemo.f90

    r177 r179  
    373373      ! On choisit le context dans lequel on va travailler 
    374374      ! et on commence le traitement des données. 
    375       CALL dtreatment_start(nemo_style_ctxt, NETCDF4) 
     375      CALL dtreatment_start(nemo_style_ctxt, NETCDF4, comm_client_server) 
     376       
     377      CALL dtreatment_end(nemo_style_ctxt) 
    376378 
    377379   END SUBROUTINE NEMO_FAKE_ENTRY 
  • XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ixmlioserver.f03.in

    r158 r179  
    9999      END SUBROUTINE xios_context_create 
    100100 
    101       SUBROUTINE xios_dtreatment_start(context_hdl, filetype) BIND(C) 
     101      SUBROUTINE xios_dtreatment_start(context_hdl, filetype, comm_client_server) BIND(C) 
    102102         import C_INTPTR_T, C_INT 
    103103         INTEGER  (kind = C_INTPTR_T), VALUE  :: context_hdl 
    104          INTEGER  (kind = C_INT), VALUE       :: filetype 
     104         INTEGER  (kind = C_INT), VALUE       :: filetype, comm_client_server 
    105105      END SUBROUTINE xios_dtreatment_start 
    106106 
     
    233233   END SUBROUTINE context_create 
    234234 
    235    SUBROUTINE dtreatment_start(context_hdl, filetype) 
     235   SUBROUTINE dtreatment_start(context_hdl, filetype, comm_client_server) 
    236236      TYPE(XHandle), INTENT(IN), VALUE :: context_hdl 
    237       INTEGER, INTENT(IN), OPTIONAL    :: filetype 
    238       INTEGER                          :: filetype_ 
     237      INTEGER, INTENT(IN), OPTIONAL    :: filetype, comm_client_server 
     238      INTEGER                          :: filetype_, comm_client_server_ 
     239       
    239240      IF (PRESENT(filetype)) THEN 
    240241         filetype_ = filetype 
     
    242243         filetype_ = NETCDF4 
    243244      END IF 
    244          CALL context_set_current(context_hdl) 
    245          CALL xios_dtreatment_start(context_hdl%daddr, filetype_) 
     245       
     246      IF (PRESENT(comm_client_server)) THEN 
     247         comm_client_server_ = comm_client_server 
     248      ELSE 
     249         comm_client_server_ = -1 
     250      END IF 
     251       
     252      CALL context_set_current(context_hdl) 
     253      CALL xios_dtreatment_start(context_hdl%daddr, filetype_, comm_client_server_) 
    246254   END SUBROUTINE dtreatment_start 
    247255 
  • XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in

    r152 r179  
    117117      MAKE_STRING(__filename, _filename, _filename_len) 
    118118      CTreeManager::ParseFile(__filename); 
    119       StdOStringStream oss; 
    120       oss << StdString("data/def/def_client_pre.") 
    121           << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    122       CTreeManager::PrintTreeToFile(oss.str()); 
     119      //~ StdOStringStream oss; 
     120      //~ oss << StdString("data/def/def_client_pre.") 
     121      //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
     122      //~ CTreeManager::PrintTreeToFile(oss.str()); 
    123123   } 
    124124   catch (CException & exc) 
     
    135135      MAKE_STRING(__xmlcontent, _xmlcontent, _xmlcontent_len) 
    136136      CTreeManager::ParseString(__xmlcontent); 
    137       StdOStringStream oss; 
    138       oss << StdString("data/def/def_client_pre.") 
    139           << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    140       CTreeManager::PrintTreeToFile(oss.str()); 
     137      //~ StdOStringStream oss; 
     138      //~ oss << StdString("data/def/def_client_pre.") 
     139      //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
     140      //~ CTreeManager::PrintTreeToFile(oss.str()); 
    141141   } 
    142142   catch (CException & exc) 
     
    245245} 
    246246 
    247 void xios_dtreatment_start(XPtr const _context, XFileType filetype) 
     247void xios_dtreatment_start(XPtr const _context, XFileType filetype, MPIComm comm_client_server) 
    248248{ 
    249249   try 
    250250   { 
    251251      StdOStringStream oss; 
    252       oss << StdString("data/def/def_client_next.") 
    253           << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    254       CTreeManager::PrintTreeToFile(oss.str()); 
    255  
    256       CDataTreatment dt; 
    257       dt.createDataOutput<CNc4DataOutput>(); 
    258  
    259       oss.str(""); 
     252      //~ oss << StdString("data/def/def_client_next.") 
     253      //~     << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
     254      //~ CTreeManager::PrintTreeToFile(oss.str()); 
     255      //~ oss.str(""); 
     256 
     257      CDataTreatment dt;    
    260258      oss << StdString("data/def/def_client_end.") 
    261259          << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
    262260      CTreeManager::PrintTreeToFile(oss.str()); 
     261       
     262      if ((comm_client_server != -1)) 
     263      { 
     264         MPIRequest request = 0; 
     265         StdOStringStream ostrs; 
     266         if (CMPIManager::GetCommRank(comm_client_server) == 1) 
     267         { 
     268            CTreeManager::ToBinary(ostrs);       
     269            CLinearBuffer lbuffer(ostrs.str().size()+13);            
     270            lbuffer.appendString(ostrs.str());  
     271            CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 
     272            CMPIManager::Wait(request);  // Pas encore en mode RPC 
     273         } 
     274         else 
     275         { 
     276            CTreeManager::DomainsToBinary(ostrs); 
     277            CLinearBuffer lbuffer(ostrs.str().size()+13); 
     278            lbuffer.appendString(ostrs.str()); 
     279            CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 
     280            CMPIManager::Wait(request);  // Pas encore en mode RPC 
     281         } 
     282      } 
     283      else 
     284      { 
     285         dt.createDataOutput<CNc4DataOutput>(); 
     286      }       
    263287   } 
    264288   catch (CException & exc) 
  • XMLIO_V2/dev/dev_rv/src/xmlio/main_server.cpp

    r177 r179  
    1616      CXIOSManager::Initialise(CXIOSManager::CLIENT_SERVER, &argc, &argv); 
    1717      CXIOSManager::AddClient("nemo"    , 2, 2, &nemo_fake_entry); 
    18       CXIOSManager::AddClient("orchidee", 1, 1, &orchidee_fake_entry); 
    19       CXIOSManager::AddClient("lmdz"    , 4, 2, &lmdz_fake_entry); 
     18      //CXIOSManager::AddClient("orchidee", 1, 1, &orchidee_fake_entry); 
     19      //CXIOSManager::AddClient("lmdz"    , 4, 2, &lmdz_fake_entry); 
    2020      CXIOSManager::RunClientServer(comm::CMPIManager::GetCommWorld()); 
    2121      CXIOSManager::Finalize(); 
     22       
     23      //comm::CMPIManager::Finalize(); // < seulement en mode connecté 
    2224 
    2325   } 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/mpi_manager.cpp

    r177 r179  
    206206         if (error != mpi_success) 
    207207            ERROR("CMPIManager::Receive (comm, src_rank, data)", << " MPI Error !"); 
    208          CMPIManager::Wait (req); 
     208         CMPIManager::Wait (req); // Temporaire 
    209209      } 
    210210 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/tree_manager.cpp

    r175 r179  
    158158      } 
    159159       
     160      void CTreeManager::FromBinary(StdString & str) 
     161      { 
     162         StdIStringStream istrs(str); 
     163         CTreeManager::FromBinary(istrs); 
     164      } 
     165             
     166 
    160167      //-------------------------------------------------------------- 
    161168       
     
    307314         } 
    308315      } 
     316       
     317      void CTreeManager::DomainsFromBinary(StdString & str) 
     318      { 
     319         StdIStringStream istrs(str); 
     320         CTreeManager::DomainsFromBinary(istrs); 
     321      } 
    309322 
    310323      ///------------------------------------------------------------- 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/tree_manager.hpp

    r175 r179  
    3737            static void ToBinary  (StdOStream & os); 
    3838            static void FromBinary(StdIStream & is); 
     39            static void FromBinary(StdString & str); 
    3940             
    4041            static void DomainsToBinary  (StdOStream & os); 
    4142            static void DomainsFromBinary(StdIStream & is); 
     43            static void DomainsFromBinary(StdString & str); 
    4244 
    4345      }; // class CTreeManager 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.cpp

    r178 r179  
    11#include "xios_manager.hpp" 
     2 
     3#include "tree_manager.hpp" 
    24 
    35namespace xmlioserver 
     
    4446         (StdString clientName, comm::MPIComm comm_client_server, comm::MPIComm comm_server) 
    4547      { 
    46  
     48         using namespace comm; 
     49          
     50         // Reconstruction de l'arborescence d'objet à l'aide des données envoyées par chacun des 
     51         // clients associés à ce serveur. 
     52         std::vector<boost::shared_ptr<CLinearBuffer> > clientBuffer; 
     53         for (int i = 1; i < CMPIManager::GetCommSize(comm_client_server); i++) 
     54         { 
     55            while (!CMPIManager::HasReceivedData(comm_client_server, i)){} 
     56            clientBuffer.push_back(CMPIManager::ReceiveLinearBuffer(comm_client_server, i)); 
     57         } 
     58          
     59         // La quasi-totalité de l'arborescence est obtenue depuis les informations 
     60         // fournies par le client 1 du sous-groupe. 
     61         StdString main_data_tree = clientBuffer[0]->getString(0);         
     62         tree::CTreeManager::FromBinary(main_data_tree); 
     63          
     64         // Obtention des sous-domaines clients. 
     65         for (int j = 1; j < clientBuffer.size(); j++) 
     66         { 
     67            main_data_tree = clientBuffer[j]->getString(0); 
     68            tree::CTreeManager::DomainsFromBinary(main_data_tree); 
     69         } 
     70          
     71         StdOStringStream oss; 
     72         oss << StdString("data/def/def_server_end.") 
     73             << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 
     74         CTreeManager::PrintTreeToFile(oss.str());          
    4775      } 
    4876       
Note: See TracChangeset for help on using the changeset viewer.