-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add initial support for nbi put-with-signal
- Loading branch information
Showing
2 changed files
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters