forked from openshmem-org/specification
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsynchronization_model.tex
110 lines (98 loc) · 3.94 KB
/
synchronization_model.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
When using the \openshmem \ac{API}, synchronization, ordering, and completion of
communication become critical. The updates via \PUT{} routines, \acp{AMO} and
store routines on symmetric data cannot be guaranteed until some form of
synchronization or ordering is introduced by the program user. The table below
gives the different synchronization and ordering choices, and the situations
where they may be useful.\\
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
\hline
\textbf{\openshmem \ac{API}} & \centering \textbf{Working of \openshmem \ac{API}} \tabularnewline
\hline
\hline
{Point-to-point synchronization}\\
\FUNC{shmem\_wait}, \FUNC{shmem\_wait\_until}
&
\raisebox{-\totalheight}{\includegraphics[width=0.7\textwidth]{figures/wait}}
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{}
&
{ Waits for a symmetric variable to be updated by a remote \ac{PE}. Should be
used when computation on the local \ac{PE} cannot proceed without the value that
the remote \ac{PE} is to update.} \tabularnewline
\hline
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{Ordering puts issued by a local \ac{PE}} \\
\FUNC{shmem\_fence}
&
\raisebox{-\totalheight}{\includegraphics[width=0.7\textwidth]{figures/fence}}
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{}
&
All \PUT{} routines, \acp{AMO} and store routines on symmetric data issued to
same \ac{PE} are guaranteed to be delivered before Puts (to the same \ac{PE})
issued after the \FUNC{fence} call. \tabularnewline
\hline
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
\hline
\textbf{\openshmem \ac{API}} & \centering \textbf{Working of \openshmem \ac{API}} \tabularnewline
\hline
\hline
{Ordering puts issued by all \ac{PE} }\\
\FUNC{shmem\_quiet}
&
\raisebox{-\totalheight}{\includegraphics[width=0.7\textwidth]{figures/quiet}}
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{}
&
{All \PUT{} routines, \acp{AMO} and store routines on symmetric data issued by a
local \ac{PE} to all remote \acp{PE} are guaranteed to be completed and visible
once quiet returns. This routine should be used when all remote writes issued by
a local \ac{PE} need to be visible to all other \acp{PE} before the local
\ac{PE} proceeds. } \tabularnewline
\hline
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
Collective synchronization over an \activeset \\
\FUNC{shmem\_barrier}
&
\raisebox{-\totalheight}{\includegraphics[width=0.7\textwidth]{figures/barrier}}
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{}
&
{All local and remote memory operations issued by all \acp{PE} within the
\activeset{} are guaranteed to be completed before any \ac{PE} in the
\activeset{} returns from the call. Additionally, no \ac{PE} my return from the
barrier until all \acp{PE} in the \activeset{} have entered the same barrier
call. This routine should be used when synchronization as well as completion of
all stores and remote memory updates via \openshmem is required over a sub set
of the executing \acp{PE}.} \tabularnewline
\hline
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
\hline
\textbf{\openshmem \ac{API}} & \centering \textbf{Working of \openshmem \ac{API}} \tabularnewline
\hline
\hline
{Collective synchronization over all \acp{PE}} \\
\FUNC{shmem\_barrier\_all}
&
\raisebox{-\totalheight}{\includegraphics[width=0.7\textwidth]{figures/barrierall}}
\end{tabular}
\begin{tabular}{p{0.2\textwidth} | p{0.7\textwidth}}
{}
&
{All local and remote memory operations issued by all \acp{PE} are guaranteed to
be completed before any \ac{PE} returns from the call. Additionally no \ac{PE}
shall return from the barrier until all \acp{PE} have entered the same
\FUNC{shmem\_barrier\_all} call. This routine should be used when
synchronization as well as completion of all stores and remote memory updates
via \openshmem is required over all \acp{PE}. } \tabularnewline
\hline
\end{tabular}
\clearpage