Skip to content
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

Rewriting annex - interoperability with other programming models #1

Closed
wants to merge 413 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
413 commits
Select commit Hold shift + click to select a range
5616636
Fix bugs in shmem_sync example, improve formatting
davidozog Feb 21, 2019
d935d3f
Clarify shmem_sync comment, improve formatting
davidozog Feb 21, 2019
b84b099
RM unused var from team translate example
naveen-rn Feb 21, 2019
8bc9660
Indent team translate example
naveen-rn Feb 21, 2019
ced68a1
Merge pull request #83 from naveen-rn/feature/teams-example
gmegan Feb 27, 2019
8630713
Merge pull request #82 from davidozog/pr/teams-sync_example
gmegan Feb 28, 2019
aadf84e
RM unnecessary log file
naveen-rn Mar 5, 2019
790d762
Update NBI atomic fetch texts
naveen-rn Mar 11, 2019
d6e5dcf
Update NBI atomic compare swap texts
naveen-rn Mar 11, 2019
4328b31
Update gitignore
naveen-rn Mar 11, 2019
6c39d4e
Update NBI atomic fetch texts
naveen-rn Mar 11, 2019
7d0d878
Update NBI atomic fetch add texts
naveen-rn Mar 11, 2019
bcc703e
Update NBI atomic fetch add texts
naveen-rn Mar 11, 2019
a00f0de
Update NBI atomic swap operation
naveen-rn Mar 11, 2019
356d86a
Update NBI fetch add and inc texts
naveen-rn Mar 11, 2019
435bfa0
Update NBI atomic bitwise routines texts
naveen-rn Mar 11, 2019
7ae05a2
Remove team configuration hints
gmegan Mar 13, 2019
8b2d6ef
update team config to indicate num_contexts is request
gmegan Mar 13, 2019
8c092f8
remove upper bound of num_contexts on team create context
gmegan Mar 13, 2019
81ee0a2
Fix typo in barrier all regarding deprecation
gmegan Mar 13, 2019
c38e51d
Merge pull request #86 from gmegan/num_contexts
gmegan Mar 14, 2019
9aeff66
Merge pull request #88 from gmegan/barrier_all
gmegan Mar 14, 2019
7f7ed94
Added unsigned types to reduction operations
gmegan Mar 14, 2019
593374a
Change from to_all to reduce and move team argument to front
gmegan Mar 14, 2019
dddb786
Broadcast routine add typed, mem versions and change team param order
gmegan Mar 14, 2019
4ffb767
Add types version of alltoall and change team param order
gmegan Mar 15, 2019
d37c5f6
Update alltoalls to match alltoall, fix missing stride params
gmegan Mar 15, 2019
a5d83f6
collect,fcollect add typed and mem version and fix team arg order
gmegan Mar 15, 2019
cff090a
Update collective intro to match collective routine updates
gmegan Mar 15, 2019
fb0cfa9
Add deprecation rationale for active set routine removal
gmegan Mar 15, 2019
0e4c68c
Clarify 2d split text and add example
gmegan Mar 18, 2019
c831fad
Added example code for team create/destroy/get context
gmegan Mar 18, 2019
0778b18
Fix missing paren typo in xor_reduce
gmegan Mar 19, 2019
d112820
Fix typos in broadcast routine prototypes
gmegan Mar 19, 2019
64edf97
Fix typos in alltoalls routine protoypes
gmegan Mar 19, 2019
4aae432
Remove word team from collect,fcollect mem routine name
gmegan Mar 19, 2019
101c338
Remove program termination from team context example
gmegan Mar 19, 2019
fd24c31
Teams intro clarification and restructure
gmegan Mar 19, 2019
80ee551
Update collective examples to match teams API
davidozog Mar 19, 2019
112cfe3
Fix formatting in shmem_collectmem description
gmegan Mar 19, 2019
ebe62f2
Update partial updates text in wait/test
Mar 20, 2019
5eb3d83
Update atomicity text to allow wait/test
Mar 20, 2019
f6c51fb
Restrict wait/test to updates via AMOs
Mar 20, 2019
70338e3
Clarify that shmem_ptr returns a locally accessible address
Mar 20, 2019
bb83a1c
Add reduction example
gmegan Mar 20, 2019
247e82d
Add green text around new content
gmegan Mar 20, 2019
0ef49c2
Fix incorrect parameter name in team_get_config
gmegan Mar 20, 2019
aeb4257
Remove condition that all PE in a team get back same config
gmegan Mar 20, 2019
5678e0c
Fix type in 2d split of xdim should be xrange
gmegan Mar 20, 2019
902745a
Change type of nreduce to size_t
gmegan Mar 25, 2019
54327ae
Merge pull request #92 from gmegan/reductions_pr
gmegan Mar 25, 2019
aa3a07a
Merge pull request #94 from gmegan/broadcast_pr
gmegan Mar 25, 2019
eaa2d61
Merge pull request #96 from gmegan/alltoall_pr
gmegan Mar 25, 2019
6c1f716
Merge pull request #97 from gmegan/collect_pr
gmegan Mar 25, 2019
a271014
Merge pull request #98 from gmegan/collective_intro
gmegan Mar 25, 2019
010115c
Merge pull request #102 from gmegan/example_2Dsplit
gmegan Mar 25, 2019
d576b7a
Merge pull request #103 from gmegan/example_team_ctx
gmegan Mar 25, 2019
376dd6b
Merge pull request #104 from gmegan/teams_intro
gmegan Mar 25, 2019
08f9d8d
Merge pull request #106 from davidozog/pr/teams_collectives_simple_ex…
gmegan Mar 25, 2019
eda5c0f
Merge pull request #107 from gmegan/get_config_pr
gmegan Mar 25, 2019
2b7de35
Add rationale for deprecating fix size collectives
gmegan Mar 25, 2019
70eef75
Merge pull request #101 from gmegan/deprecate_list
gmegan Mar 25, 2019
c9b21ac
Add include and caption for split strided example
gmegan Mar 26, 2019
e4d94d5
Add include and caption for team translate example
gmegan Mar 26, 2019
f154955
Update authors list
gmegan Mar 26, 2019
4cebc5b
Updated from March 28 WG discussion
Mar 28, 2019
da476d8
Add support for different sig update operations
naveen-rn Apr 11, 2019
c0107e6
Fix typos in library constants, handles sections
gmegan Apr 17, 2019
cf0742b
Simplify descriptions of undefined behavior in error checking section
gmegan Apr 17, 2019
d5760fc
Merge pull request #113 from gmegan/error_handling_pr
gmegan Apr 18, 2019
8961ba4
Merge pull request #112 from gmegan/lib_const_pr
gmegan Apr 18, 2019
df423c0
Fix minor issues: shmem_team_translate_pe example
davidozog Apr 29, 2019
7c51cbd
Add wait/test all/any/some API w/vector cmp_values
davidozog May 3, 2019
3d300e9
Update put-with-signal operation
naveen-rn May 3, 2019
cee7f53
Reframe the atomicity guarantees for p-w-s
naveen-rn May 3, 2019
3eb7c0b
Add support for NBI put-with-signal
naveen-rn Sep 10, 2018
4759454
Implement review comments similar to blocking put-with-signal
naveen-rn Oct 8, 2018
5c31dc9
Adding overlapping semantics in put-with-signal-nbi
naveen-rn Oct 18, 2018
c896610
Explicitly state the NBI signal update is AMO
naveen-rn Jan 8, 2019
11682c7
Fix variable usage in NBI notes section
naveen-rn Jan 8, 2019
5950fbb
Move NBI put-with-signal apiimpnotes to apinotes
naveen-rn Jan 9, 2019
c7b0db3
Add backmatter for NBI put-with-signal
naveen-rn Jan 12, 2019
0235312
RM restrict qualifier from def.tex
naveen-rn Jan 12, 2019
e6a7bb2
Fix \VAR and macro usage correctly
naveen-rn Jan 12, 2019
d08fd17
Reframe NBI signal-put compatibility with p2p syncs
naveen-rn Jan 15, 2019
8ef94d4
Update NBI put-with-signal atomicity description
naveen-rn May 3, 2019
bb999e9
Merge pull request #2 from naveen-rn/feature/put-signal-nbi-comb
naveen-rn May 3, 2019
43a2d11
Combine blk and nbi put-with-signal
naveen-rn May 3, 2019
41d1819
Describe PWS nbi ordering
naveen-rn May 3, 2019
3fad257
Update wait_until to return value
naveen-rn May 3, 2019
0312cd3
Add support to provide hints for p2p sync
naveen-rn May 4, 2019
af1791b
Merge branch 'master' into put-signal-combined
naveen-rn May 4, 2019
a2bd4e5
Update put-with-signal proposal
naveen-rn May 6, 2019
d553d42
Update put-with-signal text with many changes
naveen-rn May 6, 2019
fb03d29
Add example for shmem_wait_until_any_vector
davidozog May 6, 2019
8eedcfa
Remove 'respectively' from `cmp` description
davidozog May 6, 2019
cbaca23
Make wait/test API consistent wrt cmp/cmp_value(s)
davidozog May 6, 2019
2aa3605
Add "Wait and Test" to programming model summary
davidozog May 6, 2019
eeac4f4
Revert "Updated from March 28 WG discussion"
May 6, 2019
ec15003
Revert "Clarify that shmem_ptr returns a locally accessible address"
May 6, 2019
3e9410f
Remove partial updates text
May 6, 2019
909f4e6
Fix comparison bug in shmem_sync example w/ teams
davidozog May 14, 2019
3c77074
Rename shmem_teams_intro.tex -> teams_intro.tex
nspark Jun 1, 2019
dc57155
Rename SHMEM_TEAM_NULL -> SHMEM_TEAM_INVALID
nspark Jun 1, 2019
3e2a38b
Clarify definition of SHMEM_TEAM_INVALID
nspark Jun 1, 2019
2a4102f
Emphasize *collective* synchronizations w.r.t. team
nspark Jun 1, 2019
4dcc9e5
Partial revision of the teams intro
nspark Jun 1, 2019
53d9987
RM P2P changes from put-with-sig proposal
naveen-rn Jun 5, 2019
e7a3793
Add support for shmem_signal_wait_until
naveen-rn Jun 6, 2019
be43a4b
Revise shmem_team_{my_pe, n_pes}
nspark Jun 7, 2019
286aa84
Formatting, whitespace, and indentation cleanup for shmem_team_config_t
nspark Jun 7, 2019
a866e47
Rename shmem_team_translate_pe; minor text changes
nspark Jun 7, 2019
65faf2b
Minor revisions to shmem_team_destroy
nspark Jun 7, 2019
41fa466
Un-deprecate shmem_barrier_all
nspark Jun 7, 2019
ee7c597
Add clarifying text to shmem_barrier_all
nspark Jun 7, 2019
021e587
Revise shmem_team_destroy to destroy its shareable contexts
nspark Jun 12, 2019
d10d690
Revise shmem_finalize to destroy all teams
nspark Jun 12, 2019
b2f2200
Add missing text highlighting in shmem_ctx_destroy
nspark Jun 12, 2019
03ea9a0
Make shmem_team_translate_pe example compilable
nspark Jun 13, 2019
0034139
Revise: invalid teams and return values with shmem_team_get_config
nspark Jun 13, 2019
10266ea
Fix simple issues with shmem_team_split_strided
nspark Jun 13, 2019
8946910
Add math notation for PE triple in team_split_strided
nspark Jun 13, 2019
6691bd3
Remove leading "PE_" from PE subset triplet
nspark Jun 13, 2019
5c1a003
Minor fix for ctx-team association in shmem_ctx_create
nspark Jun 13, 2019
87f4f63
Revise errors and UB for shmem_ctx_get_team
nspark Jun 13, 2019
7646331
Initial revision of collectives introduction
nspark Jun 13, 2019
5bfa27c
Revise team/ctx-specific stuff in RMA intro
nspark Jun 13, 2019
9efe2a2
Remove outdated note about "locally created" contexts
nspark Jun 13, 2019
087da69
Merge pull request #117 from davidozog/pr/translate_example_fix
gmegan Jun 17, 2019
734ca50
Merge pull request #123 from davidozog/pr/shmem_sync_fix
gmegan Jun 17, 2019
875e10f
Fix links for reference in put-with-signal defn
naveen-rn Jun 19, 2019
a7154c4
Add shmem_signal_fetch
naveen-rn Jun 20, 2019
884df7b
Resolve merge conflicts
gmegan Jun 27, 2019
b39f012
Merge pull request #130 from gmegan/teams_merge_nick
gmegan Jun 27, 2019
428406b
Match type size in reduce example, add finalize()
davidozog Jun 27, 2019
6a66e1d
Merge branch 'master' into pr/clarify-wait
Jul 8, 2019
27232a5
Add advice to implementors to wait
Jul 8, 2019
7144393
Add AMO and read fence text to wait/test multiple APIs
Jul 8, 2019
acc1b54
Add changelog entries
Jul 8, 2019
1844257
Merge branch 'master' into teams
gmegan Jul 8, 2019
594c071
Merge branch 'nick-team-cleanup' into teams
gmegan Jul 8, 2019
7b9b17b
Merge pull request #133 from gmegan/merge_team_cleanup
gmegan Jul 8, 2019
bdedc54
Change point-to-point phrasing in teams intro
gmegan Jul 9, 2019
a7d13d8
Cleanup team creation discussion in intro
gmegan Jul 9, 2019
bd8010a
Merge pull request #134 from gmegan/teams_intro
gmegan Jul 9, 2019
73849c3
Merge pull request #132 from davidozog/pr/reduce_example_fix
gmegan Jul 9, 2019
3da9243
Update put-with-signal proposal
naveen-rn Jul 9, 2019
84c5544
Minor spell-check fix
naveen-rn Jul 9, 2019
d082f0c
Add put-with-signal in memory ordering routines
naveen-rn Jul 9, 2019
99514f1
Const qualify config args in team_split_2d; mark as 'IN' args
nspark Jul 24, 2019
6bd587b
Formatting and typo fixes in split_2d
nspark Jul 24, 2019
2f437c3
Make team_split_strided collective across parent
nspark Jul 24, 2019
9cee689
Consolidate deprecation rationale for shmem_barrier
nspark Jul 24, 2019
360acea
Fixup shmem_team_translate -> shmem_team_translate_pe in example
nspark Jul 24, 2019
02d31e1
split_2d: remove note about parameters and symmetric memory
nspark Jul 24, 2019
f65edc6
Minor formatting/editorial fixes
nspark Jul 24, 2019
86c3333
Un-deprecate shmem_sync_all; update deprecation annex
nspark Jul 24, 2019
46735a1
Fix change highlighting for shmem_sync[_all]
nspark Jul 24, 2019
8f15755
Add "default team" reference to symmetric (de|re)allocation routines
nspark Jul 24, 2019
b8e46a8
Editorial clarifications in teams intro
nspark Jul 24, 2019
58d7900
Revised shmem_wait advice to implementors
Aug 5, 2019
4b13219
Revert Add AMO text to wait/test multiple APIs
Aug 5, 2019
5e957a7
Fix read fence text in wait/test multiple APIs
Aug 5, 2019
c34548c
Add AMO text to wait/test multiple APIs
Aug 5, 2019
ade3c48
Update examples to use AMOs with wait/test
Aug 5, 2019
c7f002a
Change team_split2D example comment to latex prose
davidozog Aug 8, 2019
e76763e
Merge pull request #140 from nspark/teams
gmegan Aug 8, 2019
682a545
Merge pull request #146 from davidozog/pr/split_2D_comment_to_tex
gmegan Aug 8, 2019
a0c57d1
Fix argument info for shmem_signal_wait_until
Aug 24, 2019
673cee3
Merge Fortran removal changes
gmegan Aug 28, 2019
065581b
Fix the NBI AMO descriptions based on May Reading
Aug 30, 2019
28cb084
Add NBI AMOs in the fence and quiet routines
Aug 30, 2019
47aef7a
Fix minor and usage in the fence description
Aug 30, 2019
d23cb0f
Merge branch 'master' into amo-nbi
naveen-rn Aug 30, 2019
c7ebefd
Merge branch 'master' into put-signal-combined
naveen-rn Aug 30, 2019
4d40101
Remove redundant fairness text in test_some_vector
davidozog Sep 5, 2019
4fae811
Use shmem_set w/ wait_any_vector, fix verification
davidozog Sep 5, 2019
df3eb6c
Fix team context example variable naming
gmegan Sep 9, 2019
649c413
Remove erroneous statement about team split synchronization
gmegan Sep 9, 2019
a8e439f
Clarify team numbering in newly created teams in teams intro
gmegan Sep 9, 2019
65161bb
Add detail that team context creation is local event
gmegan Sep 9, 2019
41ed857
Update list of APIs in fence and quiet
Sep 9, 2019
3f5761b
Merge branch 'put-signal-combined' of https://github.com/naveen-rn/sp…
Sep 9, 2019
c19ae5b
Add clarification of effect of threading on shmem_sync
gmegan Sep 9, 2019
e6c9d9a
Remove fortran interface from shmem_collect table
gmegan Sep 9, 2019
62c1d1c
Clarify behavior for invalid PE number in point-to-point
gmegan Sep 9, 2019
838252d
Remove C++ interface from C11 reduction example
gmegan Sep 9, 2019
d37bed7
Remove erroneous statements about inter-split synchronization
gmegan Sep 9, 2019
2d79494
Add individual deprecated functions to Annex E
gmegan Sep 9, 2019
fee757e
Remove error handling section, move text to collective intro
gmegan Sep 9, 2019
b3bde10
Add NBI AMO in the main memory order list
Aug 30, 2019
0fba24c
Fix example intro affected by Fortran removal
Sep 25, 2019
d7662e3
Merge pull request #290 from jdinan/pr/fix-example-reference
jdinan Sep 26, 2019
264b3c8
Merge branch 'master' into pr/clarify-wait
jdinan Sep 26, 2019
ff7b03b
Resolve merge conflict
Sep 26, 2019
c4633d0
Merge pull request #267 from jdinan/pr/clarify-wait
jdinan Sep 26, 2019
ed55871
Merge branch 'master' into pr/wait_test_vector_cmp_vals
jdinan Sep 26, 2019
2bd032d
Merge changes from #267
Sep 26, 2019
5c0d48e
Remove change markers
Sep 26, 2019
b3de53a
Merge branch 'master' into put-signal-combined
jdinan Sep 26, 2019
16b2ac0
Remove additional change markers
Sep 26, 2019
64020a8
Merge pull request #275 from naveen-rn/put-signal-combined
jdinan Sep 26, 2019
2b28a01
Merge branch 'master' into pr/wait_test_vector_cmp_vals
jdinan Sep 26, 2019
254875d
Merge remote-tracking branch 'gmegan/teams-remove-errorhandle' into t…
Sep 26, 2019
cda300b
Merge pull request #274 from davidozog/pr/wait_test_vector_cmp_vals
jdinan Sep 26, 2019
be81526
Add changelog entry for the wait/test "vector" API
davidozog Oct 2, 2019
b3b20d4
Remove change highlighting
Oct 3, 2019
6602692
Merge branch 'master' into pr/teams
Oct 3, 2019
5888971
Remove change markers
Oct 3, 2019
c813338
Merge pull request #300 from jdinan/pr/docedit-changes
jdinan Oct 4, 2019
d570c69
Remove change markers
Oct 7, 2019
cd17bce
Fix duplicate label
Oct 7, 2019
81fba11
Merge branch 'master' into amo-nbi
Oct 7, 2019
7e07700
Use \OPR macro to format put-with-signal refs
Oct 7, 2019
deee817
Update: non-blocking -> nonblocking
Oct 7, 2019
a007672
Merge branch 'master' into pr/teams
Oct 8, 2019
c567bae
Merge pull request #297 from openshmem-org/pr/teams
jdinan Oct 8, 2019
ad7df7c
Merge branch 'master' into amo-nbi
jdinan Oct 8, 2019
11fd7da
DocEdits from September F2F
Oct 9, 2019
892b5d9
Add changelog for NBI AMO and fix PWS changelog
Oct 9, 2019
7b7d3f5
Verb tense corrections from @nspark
Oct 11, 2019
999106a
Merge pull request #247 from naveen-rn/amo-nbi
jdinan Oct 11, 2019
69a0842
Merge pull request #299 from davidozog/pr/wait_test_vector_changelog
jdinan Oct 11, 2019
e1d5095
Rewrite the interoperability annex
minsii Jan 29, 2019
34c7e86
Update dynamic process creation subsection
minsii Apr 1, 2019
afdc69a
Typo fix and minor word adjustment
minsii Apr 1, 2019
43c5379
Add more details in RMA semantics subsection
minsii Apr 2, 2019
c055ca4
Made a pass by English editor
minsii May 20, 2019
f8ebcfc
Fix function format
minsii Sep 9, 2019
63eef1d
Change query API to shmem_ and move text into separate file
minsii Sep 9, 2019
325957a
Add example code for pe mapping
minsii Sep 10, 2019
348d60b
Minor text adjustment
minsii Sep 10, 2019
c089a75
Simplified version of dynamic process and rma sections
minsii Sep 10, 2019
d754e7a
Do not mention interference in first paragraph
minsii Sep 12, 2019
b179132
interop/mpmd: strong advice to not use dynamic process with shmem
minsii Sep 12, 2019
56db04b
interop/rma: simply ask user to avoid using both RMA models
minsii Sep 25, 2019
ab532fb
interop/progress: mention query api to connect paragraphs
minsii Sep 25, 2019
c57d957
interop/threads: add restriction for mixed thread levels
minsii Sep 25, 2019
1c6b197
interop/id: use sync_all instead of barrier_all in example
minsii Sep 25, 2019
7e1508d
interop/progress: minor text adjustment
minsii Sep 25, 2019
e062450
interop: move interoperability to a separate file
minsii Oct 21, 2019
6c2e7b6
interop/dynamic: delete MPMD in section title
minsii Oct 21, 2019
9cb51e1
interop/threads: adjust text based on f2f meeting feedback
minsii Oct 21, 2019
683f423
interop/id: fix example
minsii Oct 21, 2019
a21c855
interop/rma: adjust text based on f2f meeting feedback
minsii Oct 21, 2019
09a6b84
interop/query: delete note to implementors
minsii Oct 21, 2019
0b801f5
interop/progress: adjust note to implementor
minsii Oct 22, 2019
f8eebf6
interop/query: shorten overview example
minsii Oct 22, 2019
b937c0a
interop/query: add example with MPI progress support
minsii Oct 22, 2019
c4da312
interop: made a pass by English editor
gpieper Oct 22, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ main_spec.log
main_spec.out
main_spec.pdf
main_spec.toc
*.log
*~
79 changes: 74 additions & 5 deletions content/backmatter.tex
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,9 @@ \chapter{Undefined Behavior in OpenSHMEM}\label{sec:undefined}
\end{longtable}



\color{ForestGreen}
\input{content/interoperability}
\color{black}

\chapter{History of OpenSHMEM}\label{sec:openshmem_history}

Expand Down Expand Up @@ -329,6 +331,22 @@ \section{Overview}\label{subsec:dep_overview}
\\ \CorCpp: \FuncRef{shmem\_\FuncParam{TYPENAME}\_add}}
& 1.4 & Current & \hyperref[subsec:shmem_atomic_add]{\FUNC{shmem\_atomic\_add}} \\ \hline
Entire \Fortran API & 1.4 & Current & (none) \\ \hline
\CorCpp: \FuncRef{shmem\_barrier} & 1.5 & Current &
\hyperref[subsec:shmem_quiet]{\FUNC{shmem\_quiet}}; \hyperref[subsec:shmem_sync]{\FUNC{shmem\_sync}} \\ \hline
\CorCpp: Active set based \FuncRef{shmem\_sync} & 1.5 & Current &
Team based \hyperref[subsec:shmem_sync]{\FUNC{shmem\_sync}} \\ \hline
\CorCpp: \FuncRef{shmem\_broadcast[32,64]} & 1.5 & Current &
\hyperref[subsec:shmem_broadcast]{\FUNC{shmem\_broadcast}} \\ \hline
\CorCpp: \FuncRef{shmem\_collect[32,64]} & 1.5 & Current &
\hyperref[subsec:shmem_collect]{\FUNC{shmem\_collect}} \\ \hline
\CorCpp: \FuncRef{shmem\_fcollect[32,64]} & 1.5 & Current &
\hyperref[subsec:shmem_collect]{\FUNC{shmem\_fcollect}} \\ \hline
\CorCpp: \FuncRef{shmem\_\TYPENAME\_OP\_to\_all} & 1.5 & Current &
\hyperref[subsec:shmem_collect]{\FUNC{shmem\_\TYPENAME\_OP\_reduce}} \\ \hline
\CorCpp: \FuncRef{shmem\_alltoall[32,64]} & 1.5 & Current &
\hyperref[subsec:shmem_alltoall]{\FUNC{shmem\_alltoall}} \\ \hline
\CorCpp: \FuncRef{shmem\_alltoalls[32,64]} & 1.5 & Current &
\hyperref[subsec:shmem_alltoalls]{\FUNC{shmem\_alltoalls}} \\ \hline
\end{longtable}
\end{center}

Expand Down Expand Up @@ -471,8 +489,30 @@ \subsection{\textit{Fortran} API}\label{subsec:deprecate-fortran} %% WARNING: Is
\footnote{Formally, \Fortran[2003] is known as ISO/IEC~1539-1:2004(E).}.




\subsection{Active-set-based collective routines}
With the addition of \openshmem teams, the previous methods for performing collective
operations has been superseded by a more readable, flexible method for
organizing and communicating between groups of \acp{PE}. All collective routines
which previously indicated subgroups of \acp{PE} with a list of
parameters to describe the subgroup composition should be phased
out in favor of using collective operations with a team parameter.

When moving from active set routines to teams based routines, the fixed-size
versions of the routines, e.g. \FUNC{shmem\_broadcast32}, were not
carried forward. Instead, all teams based collective routines use standard
\Cstd types with the option to use generic \textit{C11} functions for more portable
and maintainable implementations.

\subsection{\CorCpp: \FUNC{shmem\_barrier}}
Each \openshmem team might
be associated with some number of communication contexts. The \FUNC{shmem\_barrier}
functions imply that the default context is quiesced after synchronizing
some set of \acp{PE}. Since teams may have some number of contexts associated
with the team, it becomes less clear which context would be the ``default'' context
for that particular team. Rather than continue to support \FUNC{shmem\_barrier}
for active-sets or teams, programs should use a call to \FUNC{shmem\_quiet}
followed by a call to \FUNC{shmem\_sync} in order to explicitly
indicate which context to quiesce.

\chapter{Changes to this Document}\label{sec:changelog}

Expand All @@ -482,13 +522,31 @@ \section{Version 1.5}
The following list describes the specific changes in \openshmem[1.5]:
\begin{itemize}
%
\item Added support for nonblocking \ac{AMO} functions.
\\ See Section \ref{sec:amo-nbi}.
%
\item Added support for blocking \OPR{put-with-signal} functions.
\\ See Section \ref{subsec:shmem_put_signal}.
%
\item Added support for nonblocking \OPR{put-with-signal} functions.
\\ See Section \ref{subsec:shmem_put_signal_nbi}.
%
\item Clarified that point-to-point synchronization routines preserve the
atomicity of OpenSHMEM \acp{AMO}.
\\ See Section~\ref{subsec:amo_guarantees}.
%
\item Clarified that symmetric variables used as \VAR{ivar} arguments to
point-to-point synchronization routines must be updated using OpenSHMEM
\acp{AMO}.
\\ See Section~\ref{subsec:p2p_intro}.
%
\item Removed the entire \openshmem \Fortran API.
%
\item Added support for multipliers in \VAR{SHMEM\_SYMMETRIC\_SIZE}
environment variables.
\\ See Section \ref{subsec:environment_variables}.
%
\item Added a new multiple-element point-to-point synchronization API with
\item Added support for a multiple-element point-to-point synchronization API with
the functions: \FUNC{shmem\_wait\_until\_all}, \FUNC{shmem\_wait\_until\_any},
\FUNC{shmem\_wait\_until\_some}, \FUNC{shmem\_test\_all},
\FUNC{shmem\_test\_any}, and \FUNC{shmem\_test\_some}.
Expand All @@ -497,6 +555,17 @@ \section{Version 1.5}
\ref{subsec:shmem_test_all}, \ref{subsec:shmem_test_any}, and
\ref{subsec:shmem_test_some}.
%
\item Added support for vectorized comparison values in the multiple-element
point-to-point synchronization API with the functions:
\FUNC{shmem\_wait\_until\_all\_vector}, \FUNC{shmem\_wait\_until\_any\_vector},
\FUNC{shmem\_wait\_until\_some\_vector}, \\
\FUNC{shmem\_test\_all\_vector}, \FUNC{shmem\_test\_any\_vector}, and
\FUNC{shmem\_test\_some\_vector}.
\\See Sections \ref{subsec:shmem_wait_until_all_vector},
\ref{subsec:shmem_wait_until_any_vector}, \ref{subsec:shmem_wait_until_some_vector},
\ref{subsec:shmem_test_all_vector}, \ref{subsec:shmem_test_any_vector}, and
\ref{subsec:shmem_test_some_vector}.
%
\item Added \openshmem profiling interface.
\\ See Section~\ref{sec:openshmem_profiling_interface}.
%
Expand Down Expand Up @@ -898,4 +967,4 @@ \section{Version 1.1}
%
\end{itemize}

} %end of setlength command that was started in frontmatter.tex
%end of setlength command that was started in frontmatter.tex
117 changes: 98 additions & 19 deletions content/collective_intro.tex
Original file line number Diff line number Diff line change
@@ -1,49 +1,128 @@
\emph{Collective routines} are defined as communication or synchronization
operations on a group of \acp{PE} called an active set. The collective
routines require all \acp{PE} in the active set to simultaneously call the
\emph{Collective routines} are defined as coordinated communication or synchronization
operations performed by a group of \acp{PE}.

\openshmem provides three types of collective routines:

\begin{enumerate}
\item Collective routines that operate on teams use a team handle parameter to determine
which \acp{PE} will participate in the routine, and use resources encapsulated by the team object
to perform operations. See Section~\ref{subsec:team} for details on team management.

\begin{DeprecateBlock}
\item Collective routines that operate on active sets use a set of parameters to determine
which \acp{PE} will participate and what resources are used to perform operations.
\end{DeprecateBlock}

\item Collective routines that accept neither team nor active set
parameters, which implicitly operate on the default team and, as
required, the default context.
\end{enumerate}

\subsubsection*{Team-based collectives}

The team-based collective routines are performed with respect to a valid
\openshmem team, which is specified by a team handle argument.
Team-based collective operations require all \acp{PE} in the team to call
the routine in order for the operation to complete. If an invalid team handle
or \LibConstRef{SHMEM\_TEAM\_INVALID} is passed to a team-based collective
routine, the behavior is undefined.

Team objects encapsulate the per \ac{PE} system resources required to complete
team-based collective routines.
All \openshmem teams-based collective calls are blocking routines which may use those
system resources. On completion of a team-based collective call, the \ac{PE} may
immediately call another collective on that same team without any other intervening
synchronization across the team.

While \openshmem routines provide thread support according to the
thread-support level provided at initialization (see
Section~\ref{subsec:thread_support}), team-based collective routines
may not be called simultaneously by multiple threads on a given team.

Collective operations are matched across a given team based on ordering. So for a given team,
collectives must occur in the same order across all PEs in a team.

The team-based collective routines defined in the \openshmem Specification are:

\begin{itemize}
\item \FUNC{shmem\_team\_sync}
\item \FUNC{shmem\_\{TYPE\_\}broadcast\{mem\}}
\item \FUNC{shmem\_\{TYPE\_\}collect\{mem\}}
\item \FUNC{shmem\_\{TYPE\_\}fcollect\{mem\}}
\item Reduction routines for the following operations: AND, OR, XOR, MAX, MIN, SUM, PROD
\item \FUNC{shmem\_\{TYPE\_\}alltoall\{mem\}}
\item \FUNC{shmem\_\{TYPE\_\}alltoalls\{mem\}}
\end{itemize}

In addition, all team creation functions are collective operations. In addition to the ordering
and thread safety requirements described here, there are additional synchronization requirements
on team creation operations. See Section~\ref{subsec:team} for more details.

\begin{DeprecateBlock}

\subsubsection*{Active-set-based collectives}

The active-set-based collective routines require all \acp{PE}
in the active set to simultaneously call the
routine. A \ac{PE} that is not in the active set calling the collective
routine results in undefined behavior. All collective routines have an
active set as an input parameter except \FUNC{shmem\_barrier\_all} and
\FUNC{shmem\_sync\_all}. Both \FUNC{shmem\_barrier\_all} and
\FUNC{shmem\_sync\_all} must be called by all \acp{PE} of the \openshmem program.
routine results in undefined behavior.

The active set is defined by the arguments \VAR{PE\_start}, \VAR{logPE\_stride},
and \VAR{PE\_size}. \VAR{PE\_start} specifies the starting \ac{PE} number and
is the lowest numbered PE in the active set. The stride between successive
is the lowest numbered \ac{PE} in the active set. The stride between successive
\acp{PE} in the active set is $2^{logPE\_stride}$ and \VAR{logPE\_stride} must
be greater than or equal to zero. \VAR{PE\_size} specifies the number of
\acp{PE} in the active set and must be greater than zero. The active set must
satisfy the requirement that its last member corresponds to a valid \ac{PE}
number, that is
$0 \le PE\_start + (PE\_size - 1) * 2^{logPE\_stride} < npes$.
All \acp{PE} participating in the collective routine must provide the same

All \acp{PE} participating in the active-set-based collective routine must provide the same
values for these arguments. If any of these requirements are not met, the
behavior is undefined.

Another argument important to collective routines is \VAR{pSync}, which is a
symmetric work array. All \acp{PE} participating in a collective must pass the
same \VAR{pSync} array. On completion of a collective call, the \VAR{pSync} is
Another argument important to active-set-based collective routines is \VAR{pSync}, which is a
symmetric work array. All \acp{PE} participating in an active-set-based collective must pass the
same \VAR{pSync} array. On completion of such a collective call, the \VAR{pSync} is
restored to its original contents. The user is permitted to reuse a \VAR{pSync}
array if all previous collective routines using the \VAR{pSync} array have been
completed by all participating \acp{PE}. One can use a synchronization
collective routine such as \FUNC{shmem\_barrier} to ensure completion of previous collective
completed by all participating \acp{PE}. One can use a synchronization
collective routine such as \FUNC{shmem\_barrier} to ensure completion of previous active-set-based collective
routines. The \FUNC{shmem\_barrier} and \FUNC{shmem\_sync} routines allow the same
\VAR{pSync} array to be used on consecutive calls as long as the \acp{PE}
in the active set do not change.

All collective routines defined in the Specification are blocking. The
collective routines return on completion. The collective routines defined in
the \openshmem Specification are:
collective routines return on completion. The active-set-based collective
routines defined in the \openshmem Specification are:

\begin{itemize}
\item \FUNC{shmem\_barrier\_all}
\item \FUNC{shmem\_barrier}
\item \FUNC{shmem\_sync\_all}
\item \FUNC{shmem\_sync}
\item \FUNC{shmem\_broadcast\{32, 64\}}
\item \FUNC{shmem\_collect\{32, 64\}}
\item \FUNC{shmem\_fcollect\{32, 64\}}
\item Reductions for the following operations: AND, MAX, MIN, SUM, PROD, OR, XOR
\item Reduction routines for the following operations: AND, MAX, MIN, SUM, PROD, OR, XOR
\item \FUNC{shmem\_alltoall\{32, 64\}}
\item \FUNC{shmem\_alltoalls\{32, 64\}}
\end{itemize}

\end{DeprecateBlock}


\subsubsection*{Team-implicit collectives}

The \FUNC{shmem\_sync\_all} routine synchronizes all \acp{PE} in the
computation through the default team. This routine is equivalent to a
call to \FUNC{shmem\_team\_sync} on the default team.

The \FUNC{shmem\_barrier\_all} routine synchronizes all \acp{PE} in
the default team and ensures completion of all local and remote memory
updates issued via the default context. This routine is equivalent to
a call to \FUNC{shmem\_ctx\_quiet} on the default context followed by a
call to \FUNC{shmem\_team\_sync} on the default team.

\subsubsection*{Error codes returned from collectives}
\CorCpp routines that return an integer error code follow the convention that \CONST{0} indicates successful local completion of the operation. This is considered a best effort of the implementation to indicate that all required local operations have been performed correctly inside the routine and the internal \openshmem state on the calling \ac{PE} is consistent with the description of the routine and its arguments upon completion. Implementations may use an integer return value from a routine to define integer error codes specific to the implementation as long as those codes are not already explicitly defined for that routine by the \openshmem specification.

Collective operations involving many \acp{PE} may return values indicating success while other \acp{PE} are still executing the collective operation. Return values indicating success of a collective routine on one \ac{PE} do not indicate that all \acp{PE} involved in the collective operation will return from the routine successfully. In the case where successful local completion of a collective implies the success of some global operation, such as team creation resulting in a valid team on all involved \acp{PE}, the implementation should not return \CONST{0} from the routine if the implied or stated global guarantees of the routine are not met.
3 changes: 2 additions & 1 deletion content/coverpage.tex
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ \section*{Current Authors and Collaborators}
\item Mike Dubman, Mellanox
\item Karl Feind, \ac{HPE}
\item Manjunath Gorentla Venkata, \ac{ORNL}
\item Megan Grodowitz, Arm Inc.
\item Max Grossman, Rice University
\item Khaled Hamidouche, \ac{AMD}
\item Jeff Hammond, Intel
Expand All @@ -78,7 +79,7 @@ \section*{Current Authors and Collaborators}
\item Naveen Ravichandrasekaran, Cray Inc.
\item Michael Raymond, \ac{HPE}
\item James Ross, \ac{ARL}
\item Pavel Shamis, ARM Inc.
\item Pavel Shamis, Arm Inc.
\item Sameer Shende, \ac{UO}
\item Lauren Smith, \ac{DoD}

Expand Down
Loading