Skip to content

Commit 8f09d3e

Browse files
authored
[SYCL][ABI-break] Change max_work_item_sizes return type from id to range (#9946)
According to SYCL2020 max_work_item_sizes<n> should return range<n>, not id<n>.
1 parent f99335f commit 8f09d3e

File tree

8 files changed

+31
-29
lines changed

8 files changed

+31
-29
lines changed

sycl/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ set(SYCL_MAJOR_VERSION 7)
3636
set(SYCL_MINOR_VERSION 0)
3737
set(SYCL_PATCH_VERSION 0)
3838

39-
set(SYCL_DEV_ABI_VERSION 4)
39+
set(SYCL_DEV_ABI_VERSION 5)
4040
if (SYCL_ADD_DEV_VERSION_POSTFIX)
4141
set(SYCL_VERSION_POSTFIX "-${SYCL_DEV_ABI_VERSION}")
4242
endif()

sycl/include/sycl/info/device_traits.def

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ __SYCL_PARAM_TRAITS_SPEC(device, max_compute_units, pi_uint32,
1212
PI_DEVICE_INFO_MAX_COMPUTE_UNITS)
1313
__SYCL_PARAM_TRAITS_SPEC(device, max_work_item_dimensions, pi_uint32,
1414
PI_DEVICE_INFO_MAX_WORK_ITEM_DIMENSIONS)
15-
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<1>, id<1>,
15+
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<1>, range<1>,
1616
PI_DEVICE_INFO_MAX_WORK_ITEM_SIZES)
17-
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<2>, id<2>,
17+
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<2>, range<2>,
1818
PI_DEVICE_INFO_MAX_WORK_ITEM_SIZES)
19-
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<3>, id<3>,
19+
__SYCL_PARAM_TRAITS_TEMPLATE_SPEC(device, max_work_item_sizes<3>, range<3>,
2020
PI_DEVICE_INFO_MAX_WORK_ITEM_SIZES)
2121
__SYCL_PARAM_TRAITS_SPEC(device, max_work_group_size, size_t,
2222
PI_DEVICE_INFO_MAX_WORK_GROUP_SIZE)

sycl/source/detail/device_info.hpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -539,28 +539,31 @@ struct get_device_info_impl<bool, info::device::kernel_kernel_pipe_support> {
539539
}
540540
};
541541

542-
template <int Dimensions> id<Dimensions> construct_id(size_t *values) = delete;
542+
template <int Dimensions>
543+
range<Dimensions> construct_range(size_t *values) = delete;
543544
// Due to the flipping of work group dimensions before kernel launch, the values
544545
// should also be reversed.
545-
template <> inline id<1> construct_id<1>(size_t *values) { return {values[0]}; }
546-
template <> inline id<2> construct_id<2>(size_t *values) {
546+
template <> inline range<1> construct_range<1>(size_t *values) {
547+
return {values[0]};
548+
}
549+
template <> inline range<2> construct_range<2>(size_t *values) {
547550
return {values[1], values[0]};
548551
}
549-
template <> inline id<3> construct_id<3>(size_t *values) {
552+
template <> inline range<3> construct_range<3>(size_t *values) {
550553
return {values[2], values[1], values[0]};
551554
}
552555

553556
// Specialization for max_work_item_sizes.
554557
template <int Dimensions>
555-
struct get_device_info_impl<id<Dimensions>,
558+
struct get_device_info_impl<range<Dimensions>,
556559
info::device::max_work_item_sizes<Dimensions>> {
557-
static id<Dimensions> get(const DeviceImplPtr &Dev) {
560+
static range<Dimensions> get(const DeviceImplPtr &Dev) {
558561
size_t result[3];
559562
Dev->getPlugin()->call<PiApiKind::piDeviceGetInfo>(
560563
Dev->getHandleRef(),
561564
PiInfoCode<info::device::max_work_item_sizes<Dimensions>>::value,
562565
sizeof(result), &result, nullptr);
563-
return construct_id<Dimensions>(result);
566+
return construct_range<Dimensions>(result);
564567
}
565568
};
566569

@@ -843,19 +846,19 @@ inline uint32_t get_device_info_host<info::device::max_work_item_dimensions>() {
843846
}
844847

845848
template <>
846-
inline id<1> get_device_info_host<info::device::max_work_item_sizes<1>>() {
849+
inline range<1> get_device_info_host<info::device::max_work_item_sizes<1>>() {
847850
// current value is the required minimum
848851
return {1};
849852
}
850853

851854
template <>
852-
inline id<2> get_device_info_host<info::device::max_work_item_sizes<2>>() {
855+
inline range<2> get_device_info_host<info::device::max_work_item_sizes<2>>() {
853856
// current value is the required minimum
854857
return {1, 1};
855858
}
856859

857860
template <>
858-
inline id<3> get_device_info_host<info::device::max_work_item_sizes<3>>() {
861+
inline range<3> get_device_info_host<info::device::max_work_item_sizes<3>>() {
859862
// current value is the required minimum
860863
return {1, 1, 1};
861864
}

sycl/source/handler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -911,8 +911,8 @@ bool handler::supportsUSMMemset2D() {
911911

912912
id<2> handler::computeFallbackKernelBounds(size_t Width, size_t Height) {
913913
device Dev = MQueue->get_device();
914-
id<2> ItemLimit = Dev.get_info<info::device::max_work_item_sizes<2>>() *
915-
Dev.get_info<info::device::max_compute_units>();
914+
range<2> ItemLimit = Dev.get_info<info::device::max_work_item_sizes<2>>() *
915+
Dev.get_info<info::device::max_compute_units>();
916916
return id<2>{std::min(ItemLimit[0], Height), std::min(ItemLimit[1], Width)};
917917
}
918918

sycl/test-e2e/Basic/gpu_max_wgs_error.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ void check(range<N> global, range<N> local, bool expect_fail = false) {
3232
int main() {
3333
queue q;
3434
device d = q.get_device();
35-
id<2> max_2 = d.get_info<sycl::info::device::max_work_item_sizes<2>>();
36-
check(range<2>(max_2[0], max_2[1]), range<2>(max_2[0], max_2[1]), true);
35+
range<2> max_2 = d.get_info<sycl::info::device::max_work_item_sizes<2>>();
36+
check(max_2, max_2, true);
3737

38-
id<3> max_3 = d.get_info<sycl::info::device::max_work_item_sizes<3>>();
39-
check(range<3>(max_3[0], max_3[1], max_3[2]),
40-
range<3>(max_3[0], max_3[1], max_3[2]), true);
38+
range<3> max_3 = d.get_info<sycl::info::device::max_work_item_sizes<3>>();
39+
check(max_3, max_3, true);
4140
}

sycl/test-e2e/Basic/info.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ template <> std::string info_to_string(device info) {
167167
return "SYCL OpenCL device";
168168
}
169169

170-
template <int Dim> std::string info_to_string(id<Dim> info) {
170+
template <int Dim> std::string info_to_string(range<Dim> info) {
171171
std::string str;
172172
for (size_t i = 0; i < Dim; ++i) {
173173
str += info_to_string(info[i]) + " ";
@@ -216,11 +216,11 @@ int main() {
216216
dev, "Max compute units");
217217
print_info<info::device::max_work_item_dimensions, std::uint32_t>(
218218
dev, "Max work item dimensions");
219-
print_info<info::device::max_work_item_sizes<1>, id<1>>(
219+
print_info<info::device::max_work_item_sizes<1>, range<1>>(
220220
dev, "Max work item sizes 1D");
221-
print_info<info::device::max_work_item_sizes<2>, id<2>>(
221+
print_info<info::device::max_work_item_sizes<2>, range<2>>(
222222
dev, "Max work item sizes 2D");
223-
print_info<info::device::max_work_item_sizes<3>, id<3>>(
223+
print_info<info::device::max_work_item_sizes<3>, range<3>>(
224224
dev, "Max work item sizes 3D");
225225
print_info<info::device::max_work_group_size, size_t>(dev,
226226
"Max work group size");

sycl/test-e2e/Tracing/code_location_queue_parallel_for.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main() {
1212
sycl::queue Queue;
1313
sycl::buffer<int, 1> Buf(8);
1414
sycl::device Dev = Queue.get_device();
15-
sycl::id<1> MaxWISizes =
15+
sycl::range<1> MaxWISizes =
1616
Dev.get_info<sycl::info::device::max_work_item_sizes<1>>();
1717
bool ExceptionCaught = false;
1818
try {

sycl/test/abi/sycl_symbols_windows.dump

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
??$get_info@U?$max_work_groups@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$id@$01@23@XZ
2626
??$get_info@U?$max_work_groups@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$id@$02@12@XZ
2727
??$get_info@U?$max_work_groups@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$id@$02@23@XZ
28-
??$get_info@U?$max_work_item_sizes@$00@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$id@$00@12@XZ
29-
??$get_info@U?$max_work_item_sizes@$01@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$id@$01@12@XZ
30-
??$get_info@U?$max_work_item_sizes@$02@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$id@$02@12@XZ
28+
??$get_info@U?$max_work_item_sizes@$02@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$range@$02@12@XZ
29+
??$get_info@U?$max_work_item_sizes@$00@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$range@$00@12@XZ
30+
??$get_info@U?$max_work_item_sizes@$01@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$range@$01@12@XZ
3131
??$get_info@Uaddress_bits@device@info@_V1@sycl@@@device@_V1@sycl@@QEBAIXZ
3232
??$get_info@Uaspects@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA?AV?$vector@W4aspect@_V1@sycl@@V?$allocator@W4aspect@_V1@sycl@@@std@@@std@@XZ
3333
??$get_info@Uatomic64@device@info@_V1@sycl@@@device@_V1@sycl@@QEBA_NXZ

0 commit comments

Comments
 (0)