Ignore:
Timestamp:
11/16/21 17:37:42 (3 years ago)
Author:
ymipsl
Message:

One sided protocol improvment.
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/window_manager.hpp

    r2246 r2258  
    189189    } 
    190190 
     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 
    191205    template< typename T > 
    192206    void popFromWindow(int rank, T* object, void (T::*dumpIn)(CBufferIn&) )  
     
    206220      MPI_Win_unlock(rank, window_) ; 
    207221       
     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_) ; 
    208238    } 
    209239 
Note: See TracChangeset for help on using the changeset viewer.