- Timestamp:
- 11/16/21 17:37:42 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.