Changeset 179
- Timestamp:
- 04/18/11 17:02:22 (14 years ago)
- Location:
- XMLIO_V2/dev/dev_rv
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/Makefile.wk
r178 r179 16 16 GUI = no 17 17 NPROC = 12 18 CSUITE = gnu18 CSUITE = intel 19 19 PFORME = fedora-wk 20 20 FORTEXT = .f90 -
XMLIO_V2/dev/dev_rv/src/xmlio/buffer.hpp
r152 r179 23 23 24 24 typedef struct buffer_data 25 { CBufferDataType type; bool isArray; size_t size; size_tposition;25 { CBufferDataType type; bool isArray; StdSize size; StdSize position; 26 26 } CBufferData; 27 27 … … 127 127 /// Mutateurs privés /// 128 128 void setBufferData(const CBufferData & bufdata, StdSize position); 129 129 130 //-------------------------------------------------------------- 130 131 -
XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_nemo.f90
r177 r179 373 373 ! On choisit le context dans lequel on va travailler 374 374 ! 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) 376 378 377 379 END SUBROUTINE NEMO_FAKE_ENTRY -
XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ixmlioserver.f03.in
r158 r179 99 99 END SUBROUTINE xios_context_create 100 100 101 SUBROUTINE xios_dtreatment_start(context_hdl, filetype ) BIND(C)101 SUBROUTINE xios_dtreatment_start(context_hdl, filetype, comm_client_server) BIND(C) 102 102 import C_INTPTR_T, C_INT 103 103 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 105 105 END SUBROUTINE xios_dtreatment_start 106 106 … … 233 233 END SUBROUTINE context_create 234 234 235 SUBROUTINE dtreatment_start(context_hdl, filetype )235 SUBROUTINE dtreatment_start(context_hdl, filetype, comm_client_server) 236 236 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 239 240 IF (PRESENT(filetype)) THEN 240 241 filetype_ = filetype … … 242 243 filetype_ = NETCDF4 243 244 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_) 246 254 END SUBROUTINE dtreatment_start 247 255 -
XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in
r152 r179 117 117 MAKE_STRING(__filename, _filename, _filename_len) 118 118 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()); 123 123 } 124 124 catch (CException & exc) … … 135 135 MAKE_STRING(__xmlcontent, _xmlcontent, _xmlcontent_len) 136 136 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()); 141 141 } 142 142 catch (CException & exc) … … 245 245 } 246 246 247 void xios_dtreatment_start(XPtr const _context, XFileType filetype )247 void xios_dtreatment_start(XPtr const _context, XFileType filetype, MPIComm comm_client_server) 248 248 { 249 249 try 250 250 { 251 251 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; 260 258 oss << StdString("data/def/def_client_end.") 261 259 << CMPIManager::GetCommRank(CMPIManager::GetCommWorld()); 262 260 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 } 263 287 } 264 288 catch (CException & exc) -
XMLIO_V2/dev/dev_rv/src/xmlio/main_server.cpp
r177 r179 16 16 CXIOSManager::Initialise(CXIOSManager::CLIENT_SERVER, &argc, &argv); 17 17 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); 20 20 CXIOSManager::RunClientServer(comm::CMPIManager::GetCommWorld()); 21 21 CXIOSManager::Finalize(); 22 23 //comm::CMPIManager::Finalize(); // < seulement en mode connecté 22 24 23 25 } -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/mpi_manager.cpp
r177 r179 206 206 if (error != mpi_success) 207 207 ERROR("CMPIManager::Receive (comm, src_rank, data)", << " MPI Error !"); 208 CMPIManager::Wait (req); 208 CMPIManager::Wait (req); // Temporaire 209 209 } 210 210 -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/tree_manager.cpp
r175 r179 158 158 } 159 159 160 void CTreeManager::FromBinary(StdString & str) 161 { 162 StdIStringStream istrs(str); 163 CTreeManager::FromBinary(istrs); 164 } 165 166 160 167 //-------------------------------------------------------------- 161 168 … … 307 314 } 308 315 } 316 317 void CTreeManager::DomainsFromBinary(StdString & str) 318 { 319 StdIStringStream istrs(str); 320 CTreeManager::DomainsFromBinary(istrs); 321 } 309 322 310 323 ///------------------------------------------------------------- -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/tree_manager.hpp
r175 r179 37 37 static void ToBinary (StdOStream & os); 38 38 static void FromBinary(StdIStream & is); 39 static void FromBinary(StdString & str); 39 40 40 41 static void DomainsToBinary (StdOStream & os); 41 42 static void DomainsFromBinary(StdIStream & is); 43 static void DomainsFromBinary(StdString & str); 42 44 43 45 }; // class CTreeManager -
XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.cpp
r178 r179 1 1 #include "xios_manager.hpp" 2 3 #include "tree_manager.hpp" 2 4 3 5 namespace xmlioserver … … 44 46 (StdString clientName, comm::MPIComm comm_client_server, comm::MPIComm comm_server) 45 47 { 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()); 47 75 } 48 76
Note: See TracChangeset
for help on using the changeset viewer.