Skip to content

Commit bb999e9

Browse files
authored
Merge pull request #2 from naveen-rn/feature/put-signal-nbi-comb
Feature/put signal nbi comb
2 parents cee7f53 + 8ef94d4 commit bb999e9

File tree

4 files changed

+99
-3
lines changed

4 files changed

+99
-3
lines changed

content/backmatter.tex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,9 @@ \section{Version 1.5}
513513
\item Added support for blocking put-with-signal functions.
514514
\\ See Section \ref{subsec:shmem_put_signal}.
515515
%
516+
\item Added support for nonblocking put-with-signal functions.
517+
\\ See Section \ref{subsec:shmem_put_signal_nbi}.
518+
%
516519
\item Specified the validity of communication contexts, added the constant
517520
\CONST{SHMEM\_CTX\_INVALID}, and clarified the behavior of
518521
\FUNC{shmem\_ctx\_*} routines on invalid contexts.

content/shmem_put_signal_nbi.tex

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
\color{ForestGreen}
2+
\apisummary{
3+
The nonblocking put-with-signal routines provide a method for copying data
4+
from a contiguous local data object to a data object on a specified \ac{PE}
5+
and subsequently updating a remote flag to signal completion.
6+
}
7+
8+
\begin{apidefinition}
9+
10+
\begin{C11synopsis}
11+
void @\FuncDecl{shmem\_put\_signal\_nbi}@(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
12+
void @\FuncDecl{shmem\_put\_signal\_nbi}@(shmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
13+
\end{C11synopsis}
14+
where \TYPE{} is one of the standard \ac{RMA} types specified by Table \ref{stdrmatypes}.
15+
16+
\begin{Csynopsis}
17+
void @\FuncDecl{shmem\_\FuncParam{TYPENAME}\_put\_signal\_nbi}@(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
18+
void @\FuncDecl{shmem\_ctx\_\FuncParam{TYPENAME}\_put\_signal\_nbi}@(shmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
19+
\end{Csynopsis}
20+
where \TYPE{} is one of the standard \ac{RMA} types and has a corresponding \TYPENAME{} specified by Table \ref{stdrmatypes}.
21+
22+
\begin{CsynopsisCol}
23+
void @\FuncDecl{shmem\_put\FuncParam{SIZE}\_signal\_nbi}@(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
24+
void @\FuncDecl{shmem\_ctx\_put\FuncParam{SIZE}\_signal\_nbi}@(shmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
25+
\end{CsynopsisCol}
26+
where \SIZE{} is one of \CONST{8, 16, 32, 64, 128}.
27+
28+
\begin{CsynopsisCol}
29+
void @\FuncDecl{shmem\_putmem\_signal\_nbi}@(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
30+
void @\FuncDecl{shmem\_ctx\_putmem\_signal\_nbi}@(shmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe);
31+
\end{CsynopsisCol}
32+
33+
\begin{apiarguments}
34+
\apiargument{IN}{ctx}{A context handle specifying the context on which to
35+
perform the operation. When this argument is not provided, the operation is
36+
performed on the default context.}
37+
\apiargument{OUT}{dest}{Data object to be updated on the remote \ac{PE}.
38+
This data object must be remotely accessible.}
39+
\apiargument{IN}{source}{Data object containing the data to be copied.}
40+
\apiargument{IN}{nelems}{Number of elements in the \dest{} and \source{}
41+
arrays. \VAR{nelems} must be of type \VAR{size\_t} for \Cstd.}
42+
\apiargument{OUT}{sig\_addr}{Data object to be updated on the remote
43+
\ac{PE} as the signal. This signal data object must be remotely accessible.}
44+
\apiargument{IN}{signal}{Unsigned 64-bit value that is used for updating the
45+
remote \VAR{sig\_addr} signal data object.}
46+
\apiargument{IN}{sig\_op}{Signal operator that represents the type of update
47+
to be performed on the remote \VAR{sig\_addr} signal data object.}
48+
\apiargument{IN}{pe}{\ac{PE} number of the remote \ac{PE}.}
49+
\end{apiarguments}
50+
51+
\apidescription{
52+
The nonblocking put-with-signal routines provide a method for copying data
53+
from a contiguous local data object to a data object on a specified \ac{PE}
54+
and subsequently updating a remote flag to signal completion.
55+
56+
The routines return after posting the operation. The operation is considered
57+
complete after a subsequent call to \FUNC{shmem\_quiet}. At the completion
58+
of \FUNC{shmem\_quiet}, the data has been copied out of the \source{} array
59+
on the local \ac{PE} and delivered into the \dest{} array on the destination
60+
\ac{PE}. The delivery of \VAR{signal} flag on the remote \ac{PE} indicates
61+
the delivery of its corresponding \dest{} data words into the data object on
62+
the remote \ac{PE}.
63+
64+
The \VAR{sig\_op} signal operator determines the type of update to be
65+
performed on the remote \VAR{sig\_addr} signal data object.
66+
67+
An update to the \VAR{sig\_addr} signal data object through a non-blocking
68+
put-with-signal routine completes as if performed atomically with respect to
69+
any other non-blocking put-with-signal routine that updates the
70+
\VAR{sig\_addr} signal data object using the same \VAR{sig\_op} signal
71+
update operator and any point-to-point synchronization routine that accesses
72+
the \VAR{sig\_addr} signal data object.
73+
}
74+
75+
\apireturnvalues{
76+
None.
77+
}
78+
79+
\apinotes{
80+
The \dest{} and \VAR{sig\_addr} data objects must both be remotely
81+
accessible. The \VAR{sig\_addr} and \dest{} could be of different kinds,
82+
for example, one could be a global/static \Cstd variable and the other could
83+
be allocated on the symmetric heap.
84+
85+
\VAR{sig\_addr} and \dest{} may not be overlapping in memory.
86+
}
87+
88+
\end{apidefinition}
89+
\color{black}

main_spec.tex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ \subsection{Non-blocking Remote Memory Access Routines}\label{sec:rma_nbi}
188188
\subsubsection{\textbf{SHMEM\_PUT\_NBI}}\label{subsec:shmem_put_nbi}
189189
\input{content/shmem_put_nbi.tex}
190190

191+
\subsubsection{\textbf{SHMEM\_PUT\_SIGNAL\_NBI}}\label{subsec:shmem_put_signal_nbi}
192+
\input{content/shmem_put_signal_nbi.tex}
193+
191194
\subsubsection{\textbf{SHMEM\_GET\_NBI}}\label{subsec:shmem_get_nbi}
192195
\input{content/shmem_get_nbi.tex}
193196

utils/defs.tex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@
409409
\lstset{language={C}, backgroundcolor=\color{gray}, lineskip=2pt,
410410
escapechar=@,
411411
morekeywords={size_t, ptrdiff_t, TYPE, _Noreturn, shmem_ctx_t,
412-
uint64_t},
412+
uint64_t},
413413
aboveskip=0pt, belowskip=0pt}}{}
414414

415415
\lstnewenvironment{CsynopsisCol}
@@ -427,7 +427,7 @@
427427
\lstset{language={C}, backgroundcolor=\color{gray}, lineskip=2pt,
428428
escapechar=@,
429429
morekeywords={size_t, ptrdiff_t, TYPE, TYPENAME, SIZE, shmem_ctx_t,
430-
uint64_t},
430+
uint64_t},
431431
aboveskip=0pt, belowskip=0pt}}{}
432432

433433
\lstnewenvironment{CsynopsisST}
@@ -436,7 +436,8 @@
436436
\color{red}
437437
{\lstset{language={C}, backgroundcolor=\color{gray}, lineskip=2pt,
438438
escapechar=@,
439-
morekeywords={size_t, ptrdiff_t, TYPE, TYPENAME, SIZE, shmem_ctx_t},
439+
morekeywords={size_t, ptrdiff_t, TYPE, TYPENAME, SIZE, shmem_ctx_t,
440+
uint64_t},
440441
aboveskip=0pt, belowskip=0pt}}}{}
441442

442443
\lstnewenvironment{Fsynopsis}

0 commit comments

Comments
 (0)