Changeset 2259 for XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
- Timestamp:
- 11/17/21 16:56:04 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
r2258 r2259 73 73 74 74 75 if (!isAttachedModeEnabled()) 76 { 77 CTimer::get("create Windows").resume() ; 78 79 MPI_Intercomm_merge(interComm_,true,&interCommMerged) ; 80 81 double time ; 82 windows_.resize(clientSize_) ; 83 MPI_Comm commSelf ; 84 MPI_Comm_split(intraComm_, intraCommRank, intraCommRank, &commSelf) ; 85 MPI_Comm interComm ; 86 winComm_.resize(clientSize_) ; 87 for(int rank=0; rank<clientSize_ ; rank++) 88 { 89 time=MPI_Wtime() ; 90 MPI_Intercomm_create(commSelf, 0, interCommMerged, rank, 0 , &interComm) ; 91 MPI_Intercomm_merge(interComm, true, &winComm_[rank]) ; 92 windows_[rank].resize(2) ; 93 MPI_Win_create_dynamic(MPI_INFO_NULL, winComm_[rank], &windows_[rank][0]); 94 MPI_Win_create_dynamic(MPI_INFO_NULL, winComm_[rank], &windows_[rank][1]); 95 time=MPI_Wtime()-time ; 96 info(100)<< "MPI_Win_create_dynamic : server to client rank "<<rank<<" => "<<time/1e-6<<" us"<<endl ; 97 } 98 MPI_Comm_free(&commSelf) ; 99 CTimer::get("create Windows").suspend() ; 100 } 101 else 102 { 103 winComm_.resize(clientSize_) ; 104 windows_.resize(clientSize_) ; 105 for(int rank=0; rank<clientSize_ ; rank++) 106 { 107 winComm_[rank] = MPI_COMM_NULL ; 108 windows_[rank].resize(2) ; 109 windows_[rank][0]=MPI_WIN_NULL ; 110 windows_[rank][1]=MPI_WIN_NULL ; 111 } 112 } 75 if (!isAttachedModeEnabled()) MPI_Intercomm_merge(interComm_,true,&interCommMerged_) ; 76 MPI_Comm_split(intraComm_, intraCommRank, intraCommRank, &commSelf_) ; // for windows 113 77 114 78 itLastTimeLine=lastTimeLine.begin() ; … … 183 147 if (it==buffers.end()) // Receive the buffer size and allocate the buffer 184 148 { 185 MPI_Aint recvBuff[4] ; 186 MPI_Mrecv(recvBuff, 4, MPI_AINT, &message, &status); 187 remoteHashId_ = recvBuff[0] ; 188 StdSize buffSize = recvBuff[1]; 189 vector<MPI_Aint> winAdress(2) ; 190 winAdress[0]=recvBuff[2] ; winAdress[1]=recvBuff[3] ; 191 mapBufferSize_.insert(std::make_pair(rank, buffSize)); 192 it=(buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows_[rank], winAdress, 0, buffSize)))).first; 193 lastTimeLine[rank]=0 ; 194 itLastTimeLine=lastTimeLine.begin() ; 195 return true; 149 MPI_Aint recvBuff[4] ; 150 MPI_Mrecv(recvBuff, 4, MPI_AINT, &message, &status); 151 remoteHashId_ = recvBuff[0] ; 152 StdSize buffSize = recvBuff[1]; 153 vector<MPI_Aint> winAdress(2) ; 154 winAdress[0]=recvBuff[2] ; winAdress[1]=recvBuff[3] ; 155 mapBufferSize_.insert(std::make_pair(rank, buffSize)); 156 157 // create windows dynamically for one-sided 158 if (!isAttachedModeEnabled()) 159 { 160 CTimer::get("create Windows").resume() ; 161 MPI_Comm interComm ; 162 MPI_Intercomm_create(commSelf_, 0, interCommMerged_, rank, 0 , &interComm) ; 163 MPI_Intercomm_merge(interComm, true, &winComm_[rank]) ; 164 windows_[rank].resize(2) ; 165 MPI_Win_create_dynamic(MPI_INFO_NULL, winComm_[rank], &windows_[rank][0]); 166 MPI_Win_create_dynamic(MPI_INFO_NULL, winComm_[rank], &windows_[rank][1]); 167 CTimer::get("create Windows").suspend() ; 168 } 169 else 170 { 171 winComm_[rank] = MPI_COMM_NULL ; 172 windows_[rank].resize(2) ; 173 windows_[rank][0] = MPI_WIN_NULL ; 174 windows_[rank][1] = MPI_WIN_NULL ; 175 } 176 177 it=(buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows_[rank], winAdress, 0, buffSize)))).first; 178 lastTimeLine[rank]=0 ; 179 itLastTimeLine=lastTimeLine.begin() ; 180 181 return true; 196 182 } 197 183 else … … 425 411 if (!isAttachedModeEnabled()) 426 412 { 427 for(int rank=0; rank<clientSize_; rank++) 428 { 413 for(auto& it : winComm_) 414 { 415 int rank = it.first ; 429 416 MPI_Win_free(&windows_[rank][0]); 430 417 MPI_Win_free(&windows_[rank][1]);
Note: See TracChangeset
for help on using the changeset viewer.