C Specification
To return information about a kernel object, call the function
// Provided by CL_VERSION_2_1
cl_int clGetKernelSubGroupInfo(
cl_kernel kernel,
cl_device_id device,
cl_kernel_sub_group_info param_name,
size_t input_value_size,
const void* input_value,
size_t param_value_size,
void* param_value,
size_t* param_value_size_ret);
Description
Also see cl_khr_.
-
kernel specifies the kernel object being queried.
-
device identifies a specific device in the list of devices associated with kernel. The list of devices is the list of devices in the OpenCL context that is associated with kernel. If the list of devices associated with kernel is a single device, device can be a
NULLvalue. -
param_name specifies the information to query. The list of supported param_name types and the information returned in param_value by clGetKernelSubGroupInfo is described in the Kernel Object Sub-group Queries table.
-
input_value_size is used to specify the size in bytes of memory pointed to by input_value. This size must be == size of input type as described in the table below.
-
input_value is a pointer to memory where the appropriate parameterization of the query is passed from. If input_value is
NULL, it is ignored. -
param_value is a pointer to memory where the appropriate result being queried is returned. If param_value is
NULL, it is ignored. -
param_value_size specifies the size in bytes of memory pointed to by param_value. This size must be greater than or equal to the size of the return type specified in the Kernel Object Sub-group Queries table. If param_value is
NULL, it is ignored. -
param_value_size_ret returns the actual size in bytes of data being queried by param_name. If param_value_size_ret is
NULL, it is ignored.
| Kernel Sub-group Info | Input Type | Return Type | Description |
|---|---|---|---|
missing before version 2.1. The equivalent |
|
|
Returns the maximum sub-group size for this kernel. All sub-groups must be the same size, while the last sub-group in any work-group (i.e. the sub-group with the maximum index) could be the same or smaller size. The input_value must be an array of |
missing before version 2.1. The equivalent |
|
|
Returns the number of sub-groups that will be present in each work-group for a given local work size. All workgroups, apart from the last work-group in each dimension in the presence of non-uniform work-group sizes, will have the same number of sub-groups. The input_value must be an array of |
missing before version 2.1. Also see |
|
|
Returns the local size that will generate the requested number
of sub-groups for the kernel.
The output array must be an array of |
missing before version 2.1. Also see |
ignored |
|
This provides a mechanism for the application to query the maximum number of sub-groups that may make up each work-group to execute a kernel on a specific device given by device. The OpenCL implementation uses the resource requirements of the kernel (register usage etc.) to determine what this work-group size should be. The returned value may be used to compute a work-group size to enqueue the kernel with to give a round number of sub-groups for an enqueue. |
missing before version 2.1. Also see |
ignored |
|
Returns the number of sub-groups per work-group specified in the kernel source or IL. If the sub-group count is not specified then 0 is returned. |
clGetKernelSubGroupInfo returns CL_SUCCESS if the function is executed
successfully.
Otherwise, it returns one of the following errors:
-
CL_INVALID_if kernel is a not a valid kernel object.KERNEL -
CL_INVALID_if device is not in the list of devices associated with kernel or if device isDEVICE NULLbut there is more than one device associated with kernel. -
CL_INVALID_if device does not support sub-groups.OPERATION -
CL_INVALID_if param_name is not one of the supported values, or if the size in bytes specified by param_value_size is less than size of the return type specified in the Kernel Object Sub-group Queries table and param_value is notVALUE NULL. -
CL_INVALID_if param_name isVALUE CL_KERNEL_,MAX_ SUB_ GROUP_ SIZE_ FOR_ NDRANGE CL_KERNEL_orSUB_ GROUP_ COUNT_ FOR_ NDRANGE CL_KERNEL_and the size in bytes specified by input_value_size is not valid or if input_value isLOCAL_ SIZE_ FOR_ SUB_ GROUP_ COUNT NULL. -
CL_OUT_if there is a failure to allocate resources required by the OpenCL implementation on the device.OF_ RESOURCES -
CL_OUT_if there is a failure to allocate resources required by the OpenCL implementation on the host.OF_ HOST_ MEMORY
Document Notes
For more information, see the OpenCL Specification
This page is extracted from the OpenCL Specification. Fixes and changes should be made to the Specification, not directly.