<?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>get_enqueued_local_size</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>get_enqueued_local_size</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="get_enqueued_local_size">
        <refname>get_enqueued_local_size</refname>

        <refpurpose>
            Same as get_local_size(dimindx) if the kernel is executed with a 
uniform work-group size.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">size_t</link>
                    <function>
                        get_enqueued_local_size
                    </function>
                </funcdef>
                <paramdef><link xlink:href="scalarDataTypes.html">uint</link><parameter>dimindx</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
            Returns the same value as that returned by 
            <citerefentry><refentrytitle>get_local_size</refentrytitle></citerefentry>(<varname>dimindx</varname>) 
            if the kernel is executed with a 
            uniform work-group size.
        </para>

        <para>
            If the kernel is executed with a non-uniform work-group 
            size, returns the number of local work-items in each of 
            the work-groups that make up the uniform region of the 
            global range in the dimension identified by <varname>dimindx</varname>. If 
            the <varname>local_work_size</varname> argument to 
            <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry> 
            is not NULL, this value 
            will match the value specified in 
            <varname>local_work_size</varname>[<varname>dimindx</varname>]. 
            If <varname>local_work_size</varname> is NULL, 
            this value will match the local size that the 
            implementation determined would be most efficient at 
            implementing the uniform region of the global range.
        </para>

        <para>
          Valid values of <varname>dimindx</varname> are 0 to
          <citerefentry><refentrytitle>get_work_dim</refentrytitle></citerefentry>() - 1. For other
          values of <varname>dimindx</varname>, 
          <function>get_enqueued_local_size</function>() returns 1.
        </para>

    </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="workItemFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>get_local_size</refentrytitle></citerefentry>,
            <citerefentry href="workItemFunctions"><refentrytitle>Work-Item Functions</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueNDRangeKernel</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-Dec-2013, rev. 19 -->
</refentry>

