diff --git a/content/collective_intro.tex b/content/collective_intro.tex index 4996b178..c472a6f4 100644 --- a/content/collective_intro.tex +++ b/content/collective_intro.tex @@ -58,6 +58,7 @@ \subsubsection*{Team-based collectives} \item \FUNC{shmem\_[\FuncParam{TYPENAME}\_]collect[mem]} \item \FUNC{shmem\_[\FuncParam{TYPENAME}\_]fcollect[mem]} \item \FUNC{shmem\_[\FuncParam{TYPENAME}\_]\{and, or, xor, max, min, sum, prod\}\_reduce} +\item \FUNC{shmem\_[\FuncParam{TYPENAME}\_]sum\_\{in, ex\}scan} \end{itemize} In addition, all team creation functions are collective operations. In addition to the ordering diff --git a/content/shmem_alltoall.tex b/content/shmem_alltoall.tex index f271de11..e53461c1 100644 --- a/content/shmem_alltoall.tex +++ b/content/shmem_alltoall.tex @@ -98,7 +98,7 @@ If \VAR{team} compares equal to \LibConstRef{SHMEM\_TEAM\_INVALID} or is otherwise invalid, the behavior is undefined. - Before any \ac{PE} calls a \FUNC{shmem\_alltoall} routine, the following + Before the local \ac{PE} calls a \FUNC{shmem\_alltoall} routine, the following conditions must be ensured, otherwise the behavior is undefined: \begin{itemize} \item The \dest{} array on all \acp{PE} in the team is ready to diff --git a/content/shmem_broadcast.tex b/content/shmem_broadcast.tex index ec3d4aa4..d0b0ddb5 100644 --- a/content/shmem_broadcast.tex +++ b/content/shmem_broadcast.tex @@ -85,7 +85,7 @@ the team. \end{itemize} - Before any \ac{PE} calls a broadcast routine, the following conditions + Before the local \ac{PE} calls a broadcast routine, the following conditions must be ensured, otherwise the behavior is undefined: \begin{itemize} \item The \dest{} array on all \acp{PE} in the team is ready to diff --git a/content/shmem_collect.tex b/content/shmem_collect.tex index 921a7dd9..d53f5d62 100644 --- a/content/shmem_collect.tex +++ b/content/shmem_collect.tex @@ -88,7 +88,7 @@ If \VAR{team} compares equal to \LibConstRef{SHMEM\_TEAM\_INVALID} or is otherwise invalid, the behavior is undefined. - Before any \ac{PE} calls a collect routine, the following conditions must + Before the local \ac{PE} calls a collect routine, the following conditions must be ensured, otherwise the behavior is undefined: \begin{itemize} \item The \dest{} array on all \acp{PE} in the team is ready to diff --git a/content/shmem_reductions.tex b/content/shmem_reductions.tex index e99a12f6..dfb27ac5 100644 --- a/content/shmem_reductions.tex +++ b/content/shmem_reductions.tex @@ -295,7 +295,7 @@ \subsubsubsection{PROD} If \VAR{team} compares equal to \LibConstRef{SHMEM\_TEAM\_INVALID} or is otherwise invalid, the behavior is undefined. - Before any \ac{PE} calls a reduction routine, the following conditions + Before the local \ac{PE} calls a reduction routine, the following conditions must be ensured, otherwise the behavior is undefined: \begin{itemize} \item The \dest{} array on all \acp{PE} in the team is ready to @@ -373,7 +373,19 @@ \subsubsubsection{PROD} } \apireturnvalues{ - Zero on successful local completion. Nonzero otherwise. + Zero on successful local completion. Nonzero otherwise. +} + +\apinotes{ + The binary operations performed by \openshmem reductions are intended to be + associative and commutative. + However, floating point arithmetic is not associative or commutative due to + the inherent inaccuracies of floating-point representations caused by + rounding errors and finite precision. + This can lead to variations in the result of \openshmem arithmetic + reduction operations on floating-point datatypes, including NaN values. + A future version of the \openshmem specification may clarify the behavior + of reductions on floating point datatypes. } \begin{apiexamples} diff --git a/content/shmem_scan.tex b/content/shmem_scan.tex index b50cdb68..2d8a1f72 100644 --- a/content/shmem_scan.tex +++ b/content/shmem_scan.tex @@ -90,7 +90,7 @@ \LibConstRef{SHMEM\_TEAM\_INVALID} or is otherwise invalid, the behavior is undefined. - Before any \ac{PE} calls a scan routine, the following conditions must be + Before the local \ac{PE} calls a scan routine, the following conditions must be ensured, otherwise the behavior is undefined: \begin{itemize} \item The \dest{} array on all \acp{PE} in the team is ready to accept