<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clGetKernelWorkGroupInfo</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clGetKernelWorkGroupInfo
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clGetKernelWorkGroupInfo">
        <refname>
            clGetKernelWorkGroupInfo
        </refname>

        <refpurpose>
            Returns information about the kernel object that may be specific to a device.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
                    <function>clGetKernelWorkGroupInfo</function>
                </funcdef>

                <paramdef>
                    <link xlink:href="abstractDataTypes.html">cl_kernel</link>
                    <parameter>kernel</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="abstractDataTypes.html">cl_device_id</link>
                    <parameter>device</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="enums.html#cl_kernel_work_group_info">cl_kernel_work_group_info</link>
                    <parameter>param_name</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">size_t</link>
                    <parameter>param_value_size</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">void</link>
                    <parameter>*param_value</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">size_t</link>
                    <parameter>*param_value_size_ret</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>
            <varlistentry>
                <term> <varname> kernel </varname> </term>
                <listitem>
                    <para>
                        Specifies the kernel object being queried.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> device </varname> </term>
                <listitem>
                    <para>
                      Identifies a specific device in the list of devices associated with
                      <varname>kernel</varname>. The list of devices is the list of devices in
                      the OpenCL context that is associated with <varname>kernel</varname>. If
                      the list of devices associated with <varname>kernel</varname> is a single
                      device, <varname>device</varname> can be a NULL value.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> param_name </varname> </term>
                <listitem>
                    <para>
                      Specifies the information to query. The list of
                      supported <varname>param_name</varname> types and the
                      information returned in <varname>param_value</varname> by
                      <function>clGetKernelWorkGroupInfo</function> is described in the table
                      below.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> param_value </varname> </term>
                <listitem>
                    <para>
                        A pointer to memory where the appropriate result being queried is returned.
                        If <varname>param_value</varname> is NULL, it is ignored.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> param_value_size </varname> </term>
                <listitem>
                    <para>
                      Used to specify the size in bytes of memory pointed to by
                      <varname>param_value</varname>.  This size must be &ge; size of return
                      type as described in the table below.
                    </para>

                    <!-- table 5.20 -->
                    <informaltable frame="all">
                    <tgroup cols="3" align="left" colsep="1" rowsep="1">
                        <colspec colname="col1" colnum="1" />
                        <colspec colname="col2" colnum="2" />
                        <colspec colname="col3" colnum="3" />
                        <thead>
                            <row>
                                <entry>cl_kernel_work_group_info</entry>
                                <entry>Return Type</entry>
                                <entry>Info. returned in <varname>param_value</varname></entry>
                            </row>
                        </thead>

                        <tbody>
                            <row>
                                <entry><constant>CL_KERNEL_GLOBAL_WORK_SIZE</constant></entry>
                                <entry>size_t[3]</entry>
                                <entry>

                                    This provides a mechanism for the application to query the maximum global
                                    size that can be used to execute a kernel (i.e. <varname>global_work_size</varname>
                                    argument to <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry>)
                                    on a custom device given by <varname>device</varname> or a built-in kernel on an OpenCL device
                                    given by <varname>device</varname>.

                                    <para>
                                      If <varname>device</varname> is not a custom device
                                      or <varname>kernel</varname> is not a built-in kernel,
                                      <function>clGetKernelWorkGroupInfo</function>
                                      returns the error <constant>CL_INVALID_VALUE</constant>.
                                    </para>
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_KERNEL_WORK_GROUP_SIZE</constant></entry>
                                <entry>size_t</entry>
                                <entry>
                                    <para>
                                    This provides a mechanism for the application 
                                    to query the maximum work-group size
                                    that can be used to execute the kernel on a 
                                    specific device given by <varname>device</varname>. The
                                    OpenCL implementation uses the resource requirements of the kernel
                                    (register usage etc.) to determine what this work-group size should be.
                                    </para>

                                    <para>
                                    As a result and unlike
                                    <constant>CL_DEVICE_MAX_WORK_GROUP_SIZE</constant> 
                                    this value may vary from one kernel
                                    to another as well as one device to
                                    another.
                                    </para>

                                    <para>
                                    <constant>CL_KERNEL_WORK_GROUP_SIZE</constant>
                                    will be less than or equal to
                                    <constant>CL_DEVICE_MAX_WORK_GROUP_SIZE</constant> 
                                    for a given kernel object.
                                    </para>
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_KERNEL_COMPILE_-
WORK_GROUP_SIZE</constant></entry>
                                <entry>size_t[3]</entry>
                                <entry>
                                    Returns the work-group size specified in
                                    the kernel source or IL.

                                    If the work-group size is not specified in the kernel
                                    source or IL, (0, 0, 0) is returned.
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_KERNEL_LOCAL_MEM_SIZE</constant></entry>
                                <entry>cl_ulong</entry>
                                <entry>
                                    <para>
                                      Returns the amount of local memory in bytes being
                                      used by a kernel. This includes local memory that may
                                      be needed by an implementation to execute the kernel,
                                      variables declared inside the kernel with the <citerefentry
                                      href="local"><refentrytitle>__local</refentrytitle></citerefentry>
                                      address qualifier and local memory to
                                      be allocated for arguments to the kernel
                                      declared as pointers with the <citerefentry
                                      href="local"><refentrytitle>__local</refentrytitle></citerefentry>
                                      address qualifier and whose size is specified with
                                      <citerefentry><refentrytitle>clSetKernelArg</refentrytitle></citerefentry>.
                                    </para>

                                    <para>
                                      If the local memory size, for any pointer
                                      argument to the kernel declared with the <citerefentry
                                      href="local"><refentrytitle>__local</refentrytitle></citerefentry>
                                      address qualifier, is not specified, its size is assumed
                                      to be 0.
                                    </para>
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_KERNEL_PREFERRED_WORK_-
GROUP_SIZE_MULTIPLE</constant></entry>
                                <entry>size_t</entry>
                                <entry>
                                    Returns the preferred multiple of workgroup size for launch. This is
                                    a performance hint. Specifying a workgroup size that is not a multiple
                                    of the value returned by this query as the value of the local work size argument
                                    to <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry> will
                                    not fail to enqueue the kernel for execution unless the work-group size specified is
                                    larger than the device maximum.
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_KERNEL_PRIVATE_MEM_SIZE</constant></entry>
                                <entry>cl_ulong</entry>
                                <entry>
                                    Returns the minimum amount of private memory, in bytes, used by each work-item in the
                                    kernel. This value may include any private memory needed by an implementation to
                                    execute the kernel, including that used by the language built-ins and variable declared
                                    inside the kernel with the
                                    <citerefentry href="private"><refentrytitle>__private</refentrytitle></citerefentry> qualifier.
                                </entry>
                            </row>

                        </tbody>
                    </tgroup>
                    </informaltable>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> param_value_size_ret </varname> </term>
                <listitem>
                    <para>
                        Returns the actual size in bytes of data copied to <varname>param_value</varname>. If
                        <varname>param_value_size_ret</varname> is NULL, it is ignored.
                    </para>
                </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

<!-- ================================ NOTES  -->
    <!--<refsect1 id="notes"><title>Notes</title>
        <para>

        </para>
    </refsect1>-->

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
            Returns <errorname>CL_SUCCESS</errorname> if the function is executed successfully. Otherwise, it returns
            one of the following errors:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_DEVICE</errorname> if <varname>device</varname> is
              not in the list of devices associated with <varname>kernel</varname> or if
              <varname>device</varname> is NULL but there is more than one device associated
              with <varname>kernel</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is not
              valid, or if size in bytes specified by <varname>param_value_size</varname>
              is &lt; size of return type as described in the table above and
              <varname>param_value</varname> is not NULL.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is
              <constant>CL_KERNEL_GLOBAL_WORK_SIZE</constant> and <varname>device</varname>
              is not a custom device and <varname>kernel</varname> is not a built-in kernel.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_KERNEL</errorname> if <varname>kernel</varname> is a not
              a valid kernel object.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </listitem>
        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clGetKernelWorkGroupInfo">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clCreateKernel</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateKernelsInProgram</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clReleaseKernel</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clRetainKernel</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clSetKernelArg</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clGetKernelInfo</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ================================ COPYRIGHT  -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 12-Nov-2015, API ver 2.1 rev 23; Ext ver 2.1 rev 10; C lang ver 2.0 rev 30 -->
</refentry>

