Class INTELSubgroups
- java.lang.Object
-
- org.lwjgl.opencl.INTELSubgroups
-
public class INTELSubgroups extends java.lang.Object
Native bindings to the intel_subgroups extension.The goal of this extension is to allow programmers to improve the performance of their applications by taking advantage of the fact that some work items in a work group execute together as a group (a "subgroup"), and that work items in a subgroup can take advantage of hardware features that are not available to work items in a work group. Specifically, this extension is designed to allow work items in a subgroup to share data without the use of local memory and work group barriers, and to utilize specialized hardware to load and store blocks of data.
There is a large amount of overlap between the functionality in this extension and the functionality in the Khronos OpenCL 2.0 "cl_khr_subgroups" extension, so this extension reuses many of the names, concepts, and functions already described in the cl_khr_subgroups extension. The key differences between the Intel subgroups extension and the Khronos subgroups extension are:
- The Khronos subgroups extension requires OpenCL 2.0, but the Intel subgroups extension may be available on OpenCL 1.2 devices.
- The Khronos subgroups extension guarantees that subgroups in a work group will make independent forward progress, but the Intel extension does not guarantee that subgroups in a work group will make independent forward progress.
- The Intel extension adds a rich set of subgroup "shuffle" functions to allow work items within a work group to interchange data without the use of local memory and work group barriers.
- The Intel extension adds a set of subgroup "block read and write" functions to take advantage of specialized hardware to read or write blocks of data from or to buffers or images.
- The Intel subgroups extension does not include the subgroup pipes functions that are included as part of the Khronos subgroups extension.
- The Intel subgroups extension does not include the device-side kernel query functions for subgroups that are included as part of the Khronos subgroups extension.
Requires
CL12
.
-
-
Field Summary
Fields Modifier and Type Field Description static int
CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR
CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHRAccepted as theparam_name
parameter ofGetKernelSubGroupInfoKHR
.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static int
clGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, java.nio.ByteBuffer input_value, java.nio.ByteBuffer param_value, org.lwjgl.PointerBuffer param_value_size_ret)
Returns information about a kernel object.static int
clGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, java.nio.ByteBuffer input_value, org.lwjgl.PointerBuffer param_value, org.lwjgl.PointerBuffer param_value_size_ret)
Returns information about a kernel object.static int
nclGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, long input_value_size, long input_value, long param_value_size, long param_value, long param_value_size_ret)
Unsafe version of:GetKernelSubGroupInfoKHR
-
-
-
Field Detail
-
CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR, CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR
Accepted as theparam_name
parameter ofGetKernelSubGroupInfoKHR
.
-
-
Method Detail
-
nclGetKernelSubGroupInfoKHR
public static int nclGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, long input_value_size, long input_value, long param_value_size, long param_value, long param_value_size_ret)
Unsafe version of:GetKernelSubGroupInfoKHR
- Parameters:
input_value_size
- specifies the size in bytes of memory pointed to byinput_value
. This size must be equal to the size of the input type.param_value_size
- the size in bytes of memory pointed to byparam_value
. This size must be ≥ size of return type. Ifparam_value
isNULL
, it is ignored.
-
clGetKernelSubGroupInfoKHR
public static int clGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, java.nio.ByteBuffer input_value, @Nullable java.nio.ByteBuffer param_value, @Nullable org.lwjgl.PointerBuffer param_value_size_ret) public static int clGetKernelSubGroupInfoKHR(long kernel, long device, int param_name, java.nio.ByteBuffer input_value, @Nullable org.lwjgl.PointerBuffer param_value, @Nullable org.lwjgl.PointerBuffer param_value_size_ret)
Returns information about a kernel object.- Parameters:
kernel
- the kernel object being querieddevice
- identifies a specific device in the list of devices associated withkernel
. The list of devices is the list of devices in the OpenCL context that is associated withkernel
. If the list of devices associated withkernel
is a single device,device
can be aNULL
value.param_name
- specifies the information to query. One of:KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR
KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR
input_value
- a pointer to memory where the appropriate parameterization of the query is passed from. Ifinput_value
isNULL
it is ignored.param_value
- a pointer to memory where the appropriate result being queried is returned. Ifparam_value
isNULL
, it is ignored.param_value_size_ret
- the actual size in bytes of data being queried byparam_value
. IfNULL
, it is ignored.
-
-