RMA Test Cases
-
Review changes -
-
Download -
Patches
-
Plain diff
LocalConcurrency test cases
Combines different operations with different RMA sync modes to cover all possible conflict/sync variants for local concurrency problems / local buffer races.
Operations / Calls covered:
- Buffer accesses: buffer read, buffer write
- Local buffer write: MPI_Get, MPI_Rget
- Local buffer read: MPI_Put, MPI_Rput, MPI_Accumulate, MPI_Raccumulate, MPI_Get_accumulate, MPI_Rget_accumulate, MPI_Fetch_and_op, MPI_Compare_and_swap (Note: MPI_Get_accumulate and others may also write results in another local buffer, but we only consider the reading accesses here.)
Synchronization modes covered:
- Fences: MPI_Win_fence
- Lockall + Flush_all + Unlock_all
- Lockall + Flush_local_all + Unlock_all
- Lock + Flush + Unlock: MPI_Win_(lock|flush|unlock)
- Lock + Unlock
- Requests: MPI_R(put|get|accumulate|get_accumulate) + MPI_Wait
- PSCW
- Currently missing: Lock_all + Unlock_all
Currently missing compared to MBI (for LocalConcurrency):
- Conflict between MPI RMA operation and (non-)blocking P2P, e.g. MPI_Get + MPI_Isend/Send on the same buffer
- The conflicting access could be on a separate buffer or on the window itself (i.e., the window memory itself could be target of a local buffer access).
GlobalConcurrency test cases
Operations / Calls covered:
- Buffer accesses: buffer read, buffer write
- Local buffer read/write: MPI_Put / MPI_Get (we do not consider all other possibilities of local buffer accesses to avoid a test case explosion)
- Remote read: MPI_Get, MPI_Put
- Remote write: MPI_Put, MPI_Rput, MPI_Accumulate, MPI_Raccumulate, MPI_Get_accumulate, MPI_Rget_accumulate, MPI_Fetch_and_op, MPI_Compare_and_swap
Synchronization modes covered:
- Fences: MPI_Win_fence
- Lockall + Flush_all + Barrier + Unlock_all
- Lock + Unlock: Exclusive vs. Shared
- Requests: MPI_R(put|get|accumulate|get_accumulate) + MPI_Wait
- PSCW
- Optional (currently missing): Lock + Unlock, Lock_all + Unlock_all
Invalid Argument test cases
- Invalid target rank (-1, >= nranks, ...)
- Invalid buffer (NULL)
- Invalid Datatype (MPI_DATATYPE_NULL, freed data type)
- Invalid window (no window initialized, window freed to early)
Epoch Lifecycle
- RMA access before epoch is opened
- RMA access without closing epoch
- Double open of access epoch (double lock, non-collective fence)
- Mixing RMA access modes (fence + lock)
Edited by Simon Schwitanski
Merge request reports
Compare and
- version 179c269b68
- version 16cbe49ddd
- version 1520e62556
- version 141ab4db4a
- version 1363b9006e
- version 125016a6db
- version 113f8a97c7
- version 10826e02f0
- version 9ebf99f8e
- version 86378e836
- version 7d47b4db5
- version 6dfb10a41
- version 5dfb10a41
- version 4dfb10a41
- version 30e1b541a
- version 285df43bd
- version 1eaf3329e
- main (HEAD)
- latest version9c269b682 commits,
- version 179c269b68243 commits,
- version 16cbe49ddd23 commits,
- version 1520e6255622 commits,
- version 141ab4db4a21 commits,
- version 1363b9006e20 commits,
- version 125016a6db19 commits,
- version 113f8a97c713 commits,
- version 10826e02f012 commits,
- version 9ebf99f8e11 commits,
- version 86378e83610 commits,
- version 7d47b4db59 commits,
- version 6dfb10a418 commits,
- version 5dfb10a4124 commits,
- version 4dfb10a4131 commits,
- version 30e1b541a30 commits,
- version 285df43bd2 commits,
- version 1eaf3329e1 commit,
Compare changes
- Side-by-side
- Inline
There are no changes yet
No changes between rma and main
Loading