Skip to content

Commit 1be99b2

Browse files
committed
Add 'number of registers' to kernel_device_specific info
1 parent 831834c commit 1be99b2

File tree

6 files changed

+24
-1
lines changed

6 files changed

+24
-1
lines changed

sycl/include/CL/sycl/detail/cl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@
1616

1717
#include <CL/cl.h>
1818
#include <CL/cl_ext.h>
19+
20+
#define CL_KERNEL_NUM_REGS 0x11BB

sycl/include/CL/sycl/detail/pi.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,8 @@ typedef enum {
346346
PI_KERNEL_GROUP_INFO_LOCAL_MEM_SIZE = CL_KERNEL_LOCAL_MEM_SIZE,
347347
PI_KERNEL_GROUP_INFO_PREFERRED_WORK_GROUP_SIZE_MULTIPLE =
348348
CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE,
349-
PI_KERNEL_GROUP_INFO_PRIVATE_MEM_SIZE = CL_KERNEL_PRIVATE_MEM_SIZE
349+
PI_KERNEL_GROUP_INFO_PRIVATE_MEM_SIZE = CL_KERNEL_PRIVATE_MEM_SIZE,
350+
PI_KERNEL_GROUP_INFO_NUM_REGS = CL_KERNEL_NUM_REGS
350351
} _pi_kernel_group_info;
351352

352353
typedef enum {

sycl/include/CL/sycl/info/info_desc.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ enum class kernel_device_specific : cl_kernel_work_group_info {
250250
preferred_work_group_size_multiple =
251251
CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE,
252252
private_mem_size = CL_KERNEL_PRIVATE_MEM_SIZE,
253+
num_regs = CL_KERNEL_NUM_REGS,
253254
max_sub_group_size = CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE,
254255
max_num_sub_groups = CL_KERNEL_MAX_NUM_SUB_GROUPS,
255256
compile_num_sub_groups = CL_KERNEL_COMPILE_NUM_SUB_GROUPS,

sycl/include/CL/sycl/info/kernel_device_specific_traits.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ __SYCL_PARAM_TRAITS_SPEC(kernel_device_specific, global_work_size, cl::sycl::ran
44
__SYCL_PARAM_TRAITS_SPEC(kernel_device_specific,
55
preferred_work_group_size_multiple, size_t)
66
__SYCL_PARAM_TRAITS_SPEC(kernel_device_specific, private_mem_size, cl_ulong)
7+
__SYCL_PARAM_TRAITS_SPEC(kernel_device_specific, num_regs, uint32_t)
78
__SYCL_PARAM_TRAITS_SPEC(kernel_device_specific, work_group_size, size_t)
89
__SYCL_PARAM_TRAITS_SPEC_WITH_INPUT(kernel_device_specific, max_sub_group_size,
910
uint32_t, cl::sycl::range<3>)

sycl/plugins/cuda/pi_cuda.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2548,6 +2548,15 @@ pi_result cuda_piKernelGetGroupInfo(pi_kernel kernel, pi_device device,
25482548
return getInfo(param_value_size, param_value, param_value_size_ret,
25492549
pi_uint64(bytes));
25502550
}
2551+
case PI_KERNEL_GROUP_INFO_NUM_REGS: {
2552+
// OpenCL PRIVATE == CUDA LOCAL
2553+
int bytes = 0;
2554+
cl::sycl::detail::pi::assertion(
2555+
cuFuncGetAttribute(&bytes, CU_FUNC_ATTRIBUTE_NUM_REGS,
2556+
kernel->get()) == CUDA_SUCCESS);
2557+
return getInfo(param_value_size, param_value, param_value_size_ret,
2558+
pi_uint32(bytes));
2559+
}
25512560
default:
25522561
__SYCL_PI_HANDLE_UNKNOWN_PARAM_NAME(param_name);
25532562
}

sycl/source/detail/kernel_info.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ struct IsWorkGroupInfo<
7171
template <>
7272
struct IsWorkGroupInfo<info::kernel_device_specific::private_mem_size>
7373
: std::true_type {};
74+
template <>
75+
struct IsWorkGroupInfo<info::kernel_device_specific::num_regs>
76+
: std::true_type {};
7477

7578
template <typename T, info::kernel_device_specific Param>
7679
struct get_kernel_device_specific_info {
@@ -143,6 +146,12 @@ inline cl_ulong get_kernel_device_specific_info_host<
143146
return 0;
144147
}
145148

149+
template <>
150+
inline uint32_t get_kernel_device_specific_info_host<
151+
info::kernel_device_specific::num_regs>(const cl::sycl::device &) {
152+
return 0;
153+
}
154+
146155
template <>
147156
inline uint32_t get_kernel_device_specific_info_host<
148157
info::kernel_device_specific::max_num_sub_groups>(

0 commit comments

Comments
 (0)