-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nonblocking Collectives #456
base: main
Are you sure you want to change the base?
Changes from 1 commit
4b9f48d
bb13dd6
df261dd
48a012c
d3a7ac9
a3c8b15
1becb00
1cbd79a
f98cdf7
cc72331
a972738
db8528c
558e0d3
ef3ecf1
db79fcb
7d74314
2355bf8
b15c727
030a019
82e5d54
fb0b482
930b39c
96f0b97
ff96cf5
ef49e8f
e40b263
02a539a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,26 @@ | ||
An \openshmem nonblocking collective operation, like a blocking collective | ||
operation, is a group communication operation among the | ||
participants of the team. All participants of the team are required to call the | ||
collective operation. | ||
participants of the team. All \acp{PE} in the team are required to call the | ||
collective operation and each collective operation must be initiated in the same | ||
order across all \acp{PE} while the execution may be performed in any order. | ||
|
||
\begin{enumerate} | ||
|
||
\item Invocation semantics: Upon invocation of a nonblocking collective routine, | ||
the operation is initiated and the routine returns without ensuring completion. All participants of the Team | ||
the operation is initiated and the routine returns without ensuring completion. All \acp{PE} in the team | ||
must call this routine with identical arguments. | ||
|
||
\item Collective Types: The nonblocking variants supported include barrier all, alltoall, | ||
and broadcast collectives. Other collective operations such as | ||
reductions, collect, barrier, alltoalls, and sync will not have nonblocking variants. | ||
\item Collective Types: The nonblocking variants supported include the alltoall | ||
and broadcast collectives. All other collective operations such as | ||
reductions, collect, fcollect, barrier, barrier all, alltoalls, sync, and sync all will not have nonblocking variants. | ||
|
||
\item Completion semantics: \openshmem programs can learn the status of the collective operations | ||
\item Completion semantics: \openshmem programs can learn the status of the collective operations | ||
using the \FUNC{shmem\_req\_test} routine. The operation is completed after | ||
at least one call to \FUNC{shmem\_req\_test} or a call to \FUNC{shmem\_req\_wait}. | ||
a call to \FUNC{shmem\_req\_test} or a call to \FUNC{shmem\_req\_wait}. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Similar to what @kwaters4 mentioned. Add something like "Completion of the operation can be observed through one or more calls to \FUNC{shmem_req_test} or a single call to \FUNC{shmem_req_wait}." |
||
\item Threads: While using SHMEM\_THREAD\_MULTIPLE, the \openshmem | ||
programs are not allowed to call multiple collective operations on different threads | ||
and the same Team. | ||
and the same team. | ||
|
||
\end{enumerate} | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,7 +55,7 @@ | |
{\bf Invocation and completion}: A call to the nonblocking alltoall routine initiates the operation and returns | ||
immediately without necessarily completing the operation. On success, | ||
an opaque request handle is created and returned. The | ||
operation is completed after at least one call to \FUNC{shmem\_req\_test} or | ||
operation is completed after a call to \FUNC{shmem\_req\_test} or | ||
a call to \FUNC{shmem\_req\_wait}. When the operation is complete, the request handle | ||
is deallocated and cannot be reused. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To my understanding, this is currently worded in a way that both I believe the correct language exists in the intro on lines 17 and 18.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @kwaters4 line 17 and 18 of the intro (completion semantics) states:
This is the same as here other than the ability to observe the status of the collective. I believe the text you are quoting is older. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe I misunderstand. I thought There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I feel like this wording may be the confusing part:
Maybe this wording is more clear: |
||
|
||
|
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -59,7 +59,7 @@ | |
A call to the nonblocking broadcast routine initiates the operation and returns | ||
immediately without necessarily completing the operation. On success, | ||
an opaque request handle is created and returned. The | ||
operation is completed after at least one call to \FUNC{shmem\_req\_test} or a | ||
operation is completed after a call to \FUNC{shmem\_req\_test} or a | ||
call to \FUNC{shmem\_req\_wait}. When the operation is complete, the request handle | ||
is deallocated and cannot be reused. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To my understanding, this is currently worded in a way that both I believe the correct language exists in the intro on lines 17 and 18.
|
||
|
||
|
@@ -82,9 +82,9 @@ | |
Upon completion of a nonblocking broadcast routine, the following are true for the local | ||
\ac{PE}: | ||
\begin{itemize} | ||
\item The \dest{} data object is | ||
updated. | ||
\item The \source{} data object may be safely reused. | ||
\item The \dest{} data object is updated. | ||
\item If the local \ac{PE} is \VAR{PE\_root}, the data has been copied | ||
out of the \source{} data object. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Move this change to a separate PR and ask section committee to add it. @davidozog |
||
\end{itemize} | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should
sync_all
be supported? My hunch is it seems possibly useful...