Changeset 2258 for XIOS/dev/dev_ym/XIOS_COUPLING/src/manager
- Timestamp:
- 11/16/21 17:37:42 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/manager
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.cpp
r2246 r2258 109 109 void CContextsManager::sendNotification(int rank) 110 110 { 111 winNotify_->lockWindow (rank,0) ;112 winNotify_->pushTo Window(rank, this, &CContextsManager::notificationsDumpOut) ;113 winNotify_->unlockWindow(rank ,0) ;111 winNotify_->lockWindowExclusive(rank) ; 112 winNotify_->pushToLockedWindow(rank, this, &CContextsManager::notificationsDumpOut) ; 113 winNotify_->unlockWindow(rank) ; 114 114 } 115 115 … … 168 168 int commRank ; 169 169 MPI_Comm_rank(xiosComm_, &commRank) ; 170 winNotify_->lockWindow (commRank,0) ;171 winNotify_->popFrom Window(commRank, this, &CContextsManager::notificationsDumpIn) ;172 winNotify_->unlockWindow(commRank ,0) ;170 winNotify_->lockWindowExclusive(commRank) ; 171 winNotify_->popFromLockedWindow(commRank, this, &CContextsManager::notificationsDumpIn) ; 172 winNotify_->unlockWindow(commRank) ; 173 173 if (notifyType_==NOTIFY_CREATE_CONTEXT) createServerContext() ; 174 174 else if (notifyType_==NOTIFY_CREATE_INTERCOMM) createServerContextIntercomm() ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.cpp
r2246 r2258 72 72 void CRessourcesManager::sendNotification(int rank) 73 73 { 74 winNotify_->lockWindow (rank,0) ;75 winNotify_->pushTo Window(rank, this, &CRessourcesManager::notificationsDumpOut) ;76 winNotify_->unlockWindow(rank ,0) ;74 winNotify_->lockWindowExclusive(rank) ; 75 winNotify_->pushToLockedWindow(rank, this, &CRessourcesManager::notificationsDumpOut) ; 76 winNotify_->unlockWindow(rank) ; 77 77 } 78 78 … … 128 128 MPI_Comm_rank(xiosComm_, &commRank) ; 129 129 CTimer::get("CRessourcesManager::checkNotifications lock").resume(); 130 winNotify_->lockWindow (commRank,0) ;130 winNotify_->lockWindowExclusive(commRank) ; 131 131 CTimer::get("CRessourcesManager::checkNotifications lock").suspend(); 132 132 CTimer::get("CRessourcesManager::checkNotifications pop").resume(); 133 winNotify_->popFrom Window(commRank, this, &CRessourcesManager::notificationsDumpIn) ;133 winNotify_->popFromLockedWindow(commRank, this, &CRessourcesManager::notificationsDumpIn) ; 134 134 CTimer::get("CRessourcesManager::checkNotifications pop").suspend(); 135 135 CTimer::get("CRessourcesManager::checkNotifications unlock").resume(); 136 winNotify_->unlockWindow(commRank ,0) ;136 winNotify_->unlockWindow(commRank) ; 137 137 CTimer::get("CRessourcesManager::checkNotifications unlock").suspend(); 138 138 if (notifyType_==NOTIFY_CREATE_POOL) createPool() ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.cpp
r2246 r2258 160 160 void CServerContext::sendNotification(int rank) 161 161 { 162 winNotify_->lockWindow (rank,0) ;163 winNotify_->pushTo Window(rank, this, &CServerContext::notificationsDumpOut) ;164 winNotify_->unlockWindow(rank ,0) ;162 winNotify_->lockWindowExclusive(rank) ; 163 winNotify_->pushToLockedWindow(rank, this, &CServerContext::notificationsDumpOut) ; 164 winNotify_->unlockWindow(rank) ; 165 165 } 166 166 … … 201 201 int commRank ; 202 202 MPI_Comm_rank(contextComm_, &commRank) ; 203 winNotify_->lockWindow (commRank,0) ;204 winNotify_->popFrom Window(commRank, this, &CServerContext::notificationsDumpIn) ;205 winNotify_->unlockWindow(commRank ,0) ;203 winNotify_->lockWindowExclusive(commRank) ; 204 winNotify_->popFromLockedWindow(commRank, this, &CServerContext::notificationsDumpIn) ; 205 winNotify_->unlockWindow(commRank) ; 206 206 207 207 if (notifyInType_!= NOTIFY_NOTHING) -
XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.cpp
r2246 r2258 131 131 void CService::sendNotification(int rank) 132 132 { 133 winNotify_->lockWindow (rank,0) ;134 winNotify_->pushTo Window(rank, this, &CService::notificationsDumpOut) ;135 winNotify_->unlockWindow(rank ,0) ;133 winNotify_->lockWindowExclusive(rank) ; 134 winNotify_->pushToLockedWindow(rank, this, &CService::notificationsDumpOut) ; 135 winNotify_->unlockWindow(rank) ; 136 136 } 137 137 … … 175 175 int commRank ; 176 176 MPI_Comm_rank(serviceComm_, &commRank) ; 177 winNotify_->lockWindow (commRank,0) ;178 winNotify_->popFrom Window(commRank, this, &CService::notificationsDumpIn) ;179 winNotify_->unlockWindow(commRank ,0) ;177 winNotify_->lockWindowExclusive(commRank) ; 178 winNotify_->popFromLockedWindow(commRank, this, &CService::notificationsDumpIn) ; 179 winNotify_->unlockWindow(commRank) ; 180 180 181 181 if (notifyInType_!= NOTIFY_NOTHING) -
XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/window_manager.hpp
r2246 r2258 189 189 } 190 190 191 template< class T > 192 void pushToLockedWindow(int rank, T* object, void (T::*dumpOut)(CBufferOut&) ) 193 { 194 size_t size ; 195 MPI_Get(&size, SIZE_BUFFER_SIZE, MPI_CHAR, rank, OFFSET_BUFFER_SIZE, SIZE_BUFFER_SIZE, MPI_CHAR, window_) ; 196 MPI_Win_flush(rank,window_) ; 197 CBufferOut buffer ; 198 (object->*dumpOut)(buffer) ; 199 size_t bufferSize=buffer.count() ; 200 size_t newSize = size + bufferSize; 201 MPI_Put(&newSize, SIZE_BUFFER_SIZE, MPI_CHAR, rank, OFFSET_BUFFER_SIZE, SIZE_BUFFER_SIZE, MPI_CHAR, window_) ; 202 MPI_Put(buffer.start(), bufferSize, MPI_CHAR, rank, OFFSET_BUFFER+size, bufferSize, MPI_CHAR, window_) ; 203 } 204 191 205 template< typename T > 192 206 void popFromWindow(int rank, T* object, void (T::*dumpIn)(CBufferIn&) ) … … 206 220 MPI_Win_unlock(rank, window_) ; 207 221 222 } 223 224 template< typename T > 225 void popFromLockedWindow(int rank, T* object, void (T::*dumpIn)(CBufferIn&) ) 226 { 227 size_t size ; 228 MPI_Get(&size, SIZE_BUFFER_SIZE, MPI_CHAR, rank, OFFSET_BUFFER_SIZE, SIZE_BUFFER_SIZE, MPI_CHAR, window_) ; 229 MPI_Win_flush(rank,window_) ; 230 CBufferIn buffer(size) ; 231 MPI_Get(buffer.start(), size, MPI_CHAR, rank,OFFSET_BUFFER, size, MPI_CHAR, window_) ; 232 MPI_Win_flush(rank,window_) ; 233 (object->*dumpIn)(buffer) ; 234 235 size=buffer.remain() ; 236 MPI_Put(&size, SIZE_BUFFER_SIZE, MPI_CHAR, rank, OFFSET_BUFFER_SIZE, SIZE_BUFFER_SIZE, MPI_CHAR, window_) ; 237 MPI_Put(buffer.ptr(),buffer.remain(), MPI_CHAR, rank, OFFSET_BUFFER, buffer.remain(), MPI_CHAR, window_) ; 208 238 } 209 239
Note: See TracChangeset
for help on using the changeset viewer.