Class 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.

    • 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 by input_value. This size must be equal to the size of the input type.
        param_value_size - the size in bytes of memory pointed to by param_value. This size must be ≥ size of return type. If param_value is NULL, 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
                                                     PointerBuffer param_value_size_ret)
        
        public static int clGetKernelSubGroupInfoKHR​(long kernel,
                                                     long device,
                                                     int param_name,
                                                     java.nio.ByteBuffer input_value,
                                                     @Nullable
                                                     PointerBuffer param_value,
                                                     @Nullable
                                                     PointerBuffer param_value_size_ret)
        
        Returns information about a kernel object.
        Parameters:
        kernel - 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 NULL value.
        param_name - specifies the information to query. One of:
        KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHRKERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR
        input_value - a pointer to memory where the appropriate parameterization of the query is passed from. If input_value is NULL it is ignored.
        param_value - a pointer to memory where the appropriate result being queried is returned. If param_value is NULL, it is ignored.
        param_value_size_ret - the actual size in bytes of data being queried by param_value. If NULL, it is ignored.