Skip to content
Snippets Groups Projects

RMA Test Cases

Open Simon Schwitanski requested to merge rma into main

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

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading