Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Memory Model #477

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

nspark
Copy link
Contributor

@nspark nspark commented Sep 8, 2021

This is a very WIP draft for changes to define a memory model. It is in no way complete and almost certainly incorrect in the bit it attempts to specify. But, I invite and welcome all your feedback (You can see the remains of many previous attempts as commented-out LaTeX.)

The style of wording is heavily based on C11/C17 and cppreference.com (e.g., atomic_thread_fence).

Part of the approach here is to add the notion of PE-happens-before and PE-synchronizes-with, rather than overload/extend C's definitions of happens-before and synchronizes-with. What has so far made this a complicated endeavor (both in wording and correctness) is that OpenSHMEM has blocking and nonblocking operations, fence vs. quiet.

@nspark
Copy link
Contributor Author

nspark commented Sep 8, 2021

Most of what's currently drafted... (see bullet 7 for one challenging area)

openshmem-memory-model-draft-20210908

@nspark
Copy link
Contributor Author

nspark commented Oct 4, 2021

Some feedback points from 10/4:

  • shmem_fence is really just a release fence; it doesn't order nonblocking gets and fetching AMOs. A standalone acquire fence is likely necessary for completeness.
  • shmem_fence is a release fence for both blocking and nonblocking operations.
  • Examples or litmus tests are likely to be very helpful and illustrative.
  • Likely needs a complete definition of transitivity for PE-synchronizes-with.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant