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

Update atomic memory model text #204

Merged
merged 8 commits into from
Aug 23, 2018
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions content/backmatter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,8 @@ \section{Version 1.5}
\item This item is a template for changelist entries and should be deleted
before this document is published.
\\See Annex~\ref{sec:changelog}.
\item Clarified the atomicity guarantees of the \openshmem memory model.
\\See Section~\ref{subsec:amo_guarantees}.
\end{itemize}

\section{Version 1.4}
Expand Down
14 changes: 4 additions & 10 deletions content/memory_model.tex
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,16 @@
\subsection{Atomicity Guarantees}\label{subsec:amo_guarantees}

\openshmem contains a number of routines that perform atomic operations on
symmetric data objects, which are defined in Section \ref{sec:amo}. In
addition, \openshmem defines routines that are atomic compatible, e.g. the
point-to-point synchronization routines defined in
Section~\ref{subsec:p2p_intro}. The atomic and atomic compatible routines
symmetric data objects, which are defined in Section \ref{sec:amo}.
The atomic routines
guarantee that concurrent accesses by any of these routines to the same
location and using the same datatype (specified in Tables~\ref{stdamotypes} and
\ref{extamotypes}) will be exclusive. Two operations are concurrent when the
first operation is not completed at the target PE (e.g. by a call to
\FUNC{shmem\_quiet}) prior to the start of the second operation.

\ref{extamotypes}) will be exclusive.
\openshmem atomic operations do not guarantee exclusivity in the following
scenarios, all of which result in undefined behavior.
\begin{enumerate}
\item When concurrent accesses to the same location are performed using
\openshmem atomic or atomic compatible operations using different
datatypes.
\openshmem atomic operations using different datatypes.
\item When atomic and non-atomic \openshmem operations are used to access
the same location concurrently.
\item When \openshmem atomic operations and non-\openshmem operations (e.g.
Expand Down
3 changes: 1 addition & 2 deletions content/p2p_sync_intro.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
The point-to-point synchronization routines can be used to portably ensure
that memory access operations observe remote updates in the order enforced by
the initiator \ac{PE} using the \FUNC{shmem\_fence} and \FUNC{shmem\_quiet}
routines. The point-to-point synchronization routines are atomic-compatible,
as defined in Section~\ref{subsec:amo_guarantees}.
routines.

Where appropriate compiler support is available, \openshmem provides
type-generic point-to-point synchronization interfaces via \Cstd[11] generic
Expand Down