@@ -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.
587587A work-group function must occur within a converged control flow; i.e. all
588588work-items in the work-group must encounter precisely the same work-group
589589function.
@@ -592,27 +592,18 @@ must encounter the same work-group function in the same loop iterations.
592592All the work-items of a work-group must execute the work-group function and
593593complete reads and writes to memory before any are allowed to continue
594594execution 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
596596OpenCL since OpenCL does not define forward-progress or ordering relations
597597between work-groups, hence collective synchronization operations are not
598598well 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.
616607Using memory operations for sub-group synchronization should be used
617608carefully as forward progress of sub-groups relative to each other is only
618609supported optionally by OpenCL implementations.
0 commit comments