Skip to content

Commit

Permalink
Add initial support for nbi put-with-signal
Browse files Browse the repository at this point in the history
  • Loading branch information
naveen-rn committed Sep 10, 2018
1 parent 94976fe commit f656319
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
81 changes: 81 additions & 0 deletions content/shmem_put_signal_nbi.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
\color{Green}
\apisummary{
The nonblocking put-with-signal routines provide a method for copying data
from a contiguous local data object to a data object on a specified \ac{PE}
and subsequently setting a remote flag to signal completion.
}

\begin{apidefinition}

\begin{C11synopsis}
void @\FuncDecl{shmem\_put\_signal\_nbi}@(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int pe);
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 pe);
\end{C11synopsis}
where \TYPE{} is one of the standard \ac{RMA} types specified by Table \ref{stdrmatypes}.

\begin{Csynopsis}
void @\FuncDecl{shmem\_\FuncParam{TYPENAME}\_put\_signal\_nbi}@(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int pe);
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 pe);
\end{Csynopsis}
where \TYPE{} is one of the standard \ac{RMA} types and has a corresponding \TYPENAME{} specified by Table \ref{stdrmatypes}.

\begin{CsynopsisCol}
void @\FuncDecl{shmem\_put\FuncParam{SIZE}\_signal\_nbi}@(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int pe);
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 pe);
\end{CsynopsisCol}
where \SIZE{} is one of \CONST{8, 16, 32, 64, 128}.

\begin{CsynopsisCol}
void @\FuncDecl{shmem\_putmem\_signal\_nbi}@(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int pe);
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 pe);
\end{CsynopsisCol}

\begin{apiarguments}
\apiargument{IN}{ctx}{The context on which to perform the operation.
When this argument is not provided, the operation is performed on
\CONST{SHMEM\_CTX\_DEFAULT}.}
\apiargument{OUT}{dest}{Data object to be updated on the remote \ac{PE}. This
data object must be remotely accessible.}
\apiargument{IN}{source}{Data object containing the data to be copied.}
\apiargument{IN}{nelems}{Number of elements in the \VAR{dest} and \VAR{source}
arrays. \VAR{nelems} must be of type \VAR{size\_t} for \Cstd.}
\apiargument{OUT}{sig\_addr}{Data object to be updated on the remote
\ac{PE} as the signal. This signal data object must be
remotely accessible.}
\apiargument{IN}{signal}{Unsigned 64-bit value that is assigned to the
remote \VAR{sig\_addr} signal data object.}
\apiargument{IN}{pe}{\ac{PE} number of the remote \ac{PE}.}
\end{apiarguments}

\apidescription{
The routines return after posting the operation. The operation is considered
complete after the subsequent call to \FUNC{shmem\_quiet}. At the completion
of \FUNC{shmem\_quiet}, the data has been copied out of the \source{}
array on the local \ac{PE} and delivered into the \dest{} array on the
destination \ac{PE}. The delivery of \signal{} flag on the remote
\ac{PE} indicates the delivery of its corresponding \dest{} data words
into the data object on the remote \ac{PE}.
}

\apireturnvalues{
None.
}

\apinotes{
The \VAR{dest} and \VAR{sig\_addr} data objects must both be remotely
accessible. The \VAR{sig\_addr} and \VAR{dest} could be of different kinds,
for example, one could be a global/static \Cstd variable and the other could
be allocated on the symmetric heap.

The delivery of \signal{} flag on the remote \ac{PE} indicates only the
delivery of its corresponding \dest{} data words into the data object on
the remote \ac{PE}. Without a memory-ordering operation, there is no implied
ordering between the delivery of the signal word of a nonblocking
put-with-signal routine and another data transfer. For example, the delivery
of the signal word in a sequence consisting of a put routine followed by a
nonblocking put-with-signal routine does not imply delivery of the put
routine's data.
}

\end{apidefinition}
\color{Black}
3 changes: 3 additions & 0 deletions main_spec.tex
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,9 @@ \subsection{Non-blocking Remote Memory Access Routines}\label{sec:rma_nbi}
\subsubsection{\textbf{SHMEM\_PUT\_NBI}}\label{subsec:shmem_put_nbi}
\input{content/shmem_put_nbi.tex}

\subsubsection{\textbf{SHMEM\_PUT\_SIGNAL\_NBI}}\label{subsec:shmem_put_signal_nbi}
\input{content/shmem_put_signal_nbi.tex}

\subsubsection{\textbf{SHMEM\_GET\_NBI}}\label{subsec:shmem_get_nbi}
\input{content/shmem_get_nbi.tex}

Expand Down

0 comments on commit f656319

Please sign in to comment.