mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
[subgroups][non_uniform_broadcast] Fix broadcasting index generation (#1680)
* [subgroups][non_uniform_broadcast] Fix broadcasting index generation
The subgroup size may not be greater than `NR_OF_ACTIVE_WORK_ITEMS`.
Broadcasting index needs to be reduced in that case.
Otherwise, if subgroup size == `NR_OF_ACTIVE_WORK_ITEMS` == 4, then we
will encounter "divide-by-zero" error when evaluating `bcast_index %
(n - NR_OF_ACTIVE_WORK_ITEMS)`.
* Revert "[subgroups][non_uniform_broadcast] Fix broadcasting index generation"
This reverts commit 9bbab539de.
* [subgroups][non_uniform_broadcast] Fix broadcasting index generation
Dynamically activate half of the work items in the current subgroup
instead of hardcoding as `NR_OF_ACTIVE_WORK_ITEMS`.
* Apply suggestion
This commit is contained in:
@@ -767,7 +767,7 @@ __kernel void test_sub_group_non_uniform_broadcast(const __global Type *in, __gl
|
||||
int gid = get_global_id(0);
|
||||
XY(xy,gid);
|
||||
Type x = in[gid];
|
||||
if (xy[gid].x < NR_OF_ACTIVE_WORK_ITEMS) {
|
||||
if (xy[gid].x < (get_sub_group_size() >> 1)) {
|
||||
out[gid] = sub_group_non_uniform_broadcast(x, xy[gid].z);
|
||||
} else {
|
||||
out[gid] = sub_group_non_uniform_broadcast(x, xy[gid].w);
|
||||
@@ -779,7 +779,7 @@ __kernel void test_sub_group_broadcast_first(const __global Type *in, __global i
|
||||
int gid = get_global_id(0);
|
||||
XY(xy,gid);
|
||||
Type x = in[gid];
|
||||
if (xy[gid].x < NR_OF_ACTIVE_WORK_ITEMS) {
|
||||
if (xy[gid].x < (get_sub_group_size() >> 1)) {
|
||||
out[gid] = sub_group_broadcast_first(x);;
|
||||
} else {
|
||||
out[gid] = sub_group_broadcast_first(x);;
|
||||
|
||||
Reference in New Issue
Block a user