Changeset 1765 for XIOS/dev/dev_ym/XIOS_SERVICES/src/cxios.cpp
- Timestamp:
- 11/06/19 11:03:38 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_SERVICES/src/cxios.cpp
r1764 r1765 180 180 181 181 // Initialize all aspects MPI 182 // CServer::initialize();183 184 182 CServer::initialize(); 185 186 //if (CServer::getRank()==0 && CServer::serverLevel != 1) globalRegistry = new CRegistry(CServer::intraComm) ;187 188 /*189 if (printLogs2Files)190 {191 if (CServer::serverLevel == 0)192 {193 CServer::openInfoStream(serverFile);194 CServer::openErrorStream(serverFile);195 }196 else if (CServer::serverLevel == 1)197 {198 CServer::openInfoStream(serverPrmFile);199 CServer::openErrorStream(serverPrmFile);200 }201 else202 {203 CServer::openInfoStream(serverSndFile);204 CServer::openErrorStream(serverSndFile);205 }206 }207 else208 {209 CServer::openInfoStream();210 CServer::openErrorStream();211 }212 213 // Enter the loop to listen message from Client214 CServer::eventLoop();215 */216 // Finalize217 /*218 if (CServer::serverLevel == 0)219 {220 if (CServer::getRank()==0)221 {222 info(80)<<"Write data base Registry"<<endl<<globalRegistry->toString()<<endl ;223 globalRegistry->toFile("xios_registry.bin") ;224 delete globalRegistry ;225 }226 }227 else228 {229 // If using two server levels:230 // (1) merge registries on each pool231 // (2) send merged registries to the first pool232 // (3) merge received registries on the first pool233 if (CServer::serverLevel == 2)234 {235 vector<int>& secondaryServerGlobalRanks = CServer::getSecondaryServerGlobalRanks();236 int firstPoolGlobalRank = secondaryServerGlobalRanks[0];237 int rankGlobal;238 MPI_Comm_rank(globalComm, &rankGlobal);239 240 // Merge registries defined on each pools241 CRegistry globalRegistrySndServers (CServer::intraComm);242 243 // All pools (except the first): send globalRegistry to the first pool244 for (int i=1; i<secondaryServerGlobalRanks.size(); i++)245 {246 if (rankGlobal == secondaryServerGlobalRanks[i])247 {248 globalRegistrySndServers.mergeRegistry(*globalRegistry) ;249 int registrySize = globalRegistrySndServers.size();250 MPI_Send(®istrySize,1,MPI_LONG,firstPoolGlobalRank,15,CXios::globalComm) ;251 CBufferOut buffer(registrySize) ;252 globalRegistrySndServers.toBuffer(buffer) ;253 MPI_Send(buffer.start(),registrySize,MPI_CHAR,firstPoolGlobalRank,15,CXios::globalComm) ;254 }255 }256 257 // First pool: receive globalRegistry of all secondary server pools, merge and write the resultant registry258 if (rankGlobal == firstPoolGlobalRank)259 {260 MPI_Status status;261 char* recvBuff;262 263 globalRegistrySndServers.mergeRegistry(*globalRegistry) ;264 265 for (int i=1; i< secondaryServerGlobalRanks.size(); i++)266 {267 int rank = secondaryServerGlobalRanks[i];268 int registrySize = 0;269 MPI_Recv(®istrySize, 1, MPI_LONG, rank, 15, CXios::globalComm, &status);270 recvBuff = new char[registrySize];271 MPI_Recv(recvBuff, registrySize, MPI_CHAR, rank, 15, CXios::globalComm, &status);272 CBufferIn buffer(recvBuff, registrySize) ;273 CRegistry recvRegistry;274 recvRegistry.fromBuffer(buffer) ;275 globalRegistrySndServers.mergeRegistry(recvRegistry) ;276 delete[] recvBuff;277 }278 279 info(80)<<"Write data base Registry"<<endl<<globalRegistrySndServers.toString()<<endl ;280 globalRegistrySndServers.toFile("xios_registry.bin") ;281 282 }283 }284 delete globalRegistry;285 }286 */287 288 183 CServer::finalize(); 289 184
Note: See TracChangeset
for help on using the changeset viewer.