Class INTELSubgroups
- java.lang.Object
-
- org.lwjgl.opencl.INTELSubgroups
-
public class INTELSubgroups extends java.lang.ObjectNative 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 and Description static intCL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR
CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHRAccepted as theparam_nameparameter ofGetKernelSubGroupInfoKHR.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static intclGetKernelSubGroupInfoKHR(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 intclGetKernelSubGroupInfoKHR(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.
-
-
-
Field Detail
-
CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR, CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR
Accepted as theparam_nameparameter ofGetKernelSubGroupInfoKHR.
-
-
Method Detail
-
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 withkernelis a single device,devicecan be aNULLvalue.param_name- specifies the information to query. One of:KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHRKERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHRinput_value- a pointer to memory where the appropriate parameterization of the query is passed from. Ifinput_valueisNULLit is ignored.param_value- a pointer to memory where the appropriate result being queried is returned. Ifparam_valueisNULL, it is ignored.param_value_size_ret- the actual size in bytes of data being queried byparam_value. IfNULL, it is ignored.
-
-