Skip to content

Commit 6e02cd9

Browse files
authored
clarify description of sub-group functions (KhronosGroup#1483)
Removes a copy-paste error and rephrases to reduce duplication.
1 parent 14611ec commit 6e02cd9

1 file changed

Lines changed: 14 additions & 23 deletions

File tree

api/opencl_architecture.asciidoc

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -578,12 +578,12 @@ Consider the following three domains of synchronization in OpenCL:
578578
for execution
579579

580580

581-
Synchronization across all work-items within a single work-group is carried
582-
out using a _work-group function_.
583-
These functions carry out collective operations across all the work-items in
584-
a work-group.
585-
Available collective operations are: barrier, reduction, broadcast, prefix
586-
sum, and evaluation of a predicate.
581+
Synchronization across work-items within a work-group is done by using a
582+
_work-group function_.
583+
These functions perform collective operations across the work-items in a
584+
work-group.
585+
Available collective operations include barriers, reductions, broadcast, prefix
586+
sums, and evaluation of a predicate.
587587
A work-group function must occur within a converged control flow; i.e. all
588588
work-items in the work-group must encounter precisely the same work-group
589589
function.
@@ -592,27 +592,18 @@ must encounter the same work-group function in the same loop iterations.
592592
All the work-items of a work-group must execute the work-group function and
593593
complete reads and writes to memory before any are allowed to continue
594594
execution beyond the work-group function.
595-
Work-group functions that apply between work-groups are not provided in
595+
Work-group functions that apply across work-groups are not provided in
596596
OpenCL since OpenCL does not define forward-progress or ordering relations
597597
between work-groups, hence collective synchronization operations are not
598598
well defined.
599599

600-
Synchronization across all work-items within a single sub-group is carried
601-
out using a _sub-group function_.
602-
These functions carry out collective operations across all the work-items in
603-
a sub-group.
604-
Available collective operations are: barrier, reduction, broadcast, prefix
605-
sum, and evaluation of a predicate.
606-
A sub-group function must occur within a converged control flow; i.e. all
607-
work-items in the sub-group must encounter precisely the same sub-group
608-
function.
609-
For example, if a work-group function occurs within a loop, the work-items
610-
must encounter the same sub-group function in the same loop iterations.
611-
All the work-items of a sub-group must execute the sub-group function and
612-
complete reads and writes to memory before any are allowed to continue
613-
execution beyond the sub-group function.
614-
Synchronization between sub-groups must either be performed using work-group
615-
functions, or through memory operations.
600+
Synchronization across work-items within a sub-group is done by using a
601+
_sub-group function_.
602+
These functions perform collective operations across the work-items in a
603+
sub-group.
604+
Like work-group functions, sub-group functions must also occur within a
605+
converged control flow; i.e. all work-items in the sub-group must encounter
606+
precisely the same sub-group function.
616607
Using memory operations for sub-group synchronization should be used
617608
carefully as forward progress of sub-groups relative to each other is only
618609
supported optionally by OpenCL implementations.

0 commit comments

Comments
 (0)