MPI-3 RMA Implementation Timeline
From Mpich
This page will be used for planning and management of the MPI-3 RMA reference implementation in MPICH2.
The MPICH MPI-3 RMA reference implementation was completed on Nov. 9, 2012.
MPI-3 RMA Reference Implementation Timeline
- Memory model
- Separate -> Unified
- No changes needed
- Accumulate operation ordering
- No changes needed (CH3 already provides ordering as long as we don't move these operations around in the RMA ops queue).
- Separate -> Unified
- Dynamic windows
- Done, committed to trunk
- Shared memory windows
- Basic support, committed to trunk. Not optimized for shared memory; ops still queue up and will go through CH3 communication.
- Synchronization operations must be updated for this window type
- Lock - must take the lock immediately
- Unlock - needs a memory barrier
- Flush - needs a memory barrier
- Additional sync operations are needed when flushing shared memory windows.
- New one-sided communication operations
- Compare-and-swap
- Done, committed to trunk
- Fetch-and-op
- Done, committed to trunk
- Get-accumulate
- Done, committed to trunk.
- Compare-and-swap
- Basic synchronization operations
- Ability to acquire lock before unlock
- Done, committed to trunk.
- Ability to issue ops before unlock
- Done, committed to trunk.
- Ability to remove completed operations from the RMA ops list
- Done, committed to trunk.
- Flush
- Done, committed to trunk.
- Sync
- Done, committed to trunk. Implemented as an OPA_read_write_barrier().
- Request-based operations
- Done, committed to trunk.
- Ability to acquire lock before unlock
- Multi-target support
- Simple locking of multiple targets
- In CR
- Lock-all
- In CR
- Flush-all
- In CR
- Simple locking of multiple targets
- Info operations: MPI_Win_set_info and MPI_Win_get_info
- Done, committed to trunk.