<?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">[
<!ENTITY qualifierInc SYSTEM "qualifierInc.xml">
<!ENTITY qualifierExampleInc SYSTEM "qualifierExampleInc.xml">
]>

<!-- !!! code examples need nicer formatting. See the core spec, pp. 220-221  -->

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>__local</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>__local</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2011y</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="__local">
        <refname>__local</refname>

        <refpurpose>
            Address Space Qualifier.
        </refpurpose>
    </refnamediv>

    <!-- ALTERNATIVE SYNTAX SYNOPSIS (NON-FUNCTION) -->
    <refsect2 id="synopsis">
        <title>
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
__local
local
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>

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

    <refsect1 id="description"><title>Description</title>

        &qualifierInc;

    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
            The <function>__local</function> or <function>local</function> address space name is
            used to describe variables that need to be allocated in local memory and are shared by
            all work-items of a work-group. Pointers to the <function>__local</function> address
            space are allowed as arguments to functions (including <function>__kernel</function>
            functions). Variables allocated in the <function>__local</function> address space can
            also be defined inside a <function>__kernel</function> function scope.
        </para>
    </refsect1>

<!-- ================================ EXAMPLE  -->

    <refsect2 id="example1">
        <title>
            Example
        </title>

        &qualifierExampleInc;

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
// Examples of variables allocated in the __local address space
// inside a __kernel function

__kernel void my_func(...)
{
      __local float      a;       // A single float allocated
                                  // in local address space

      __local float      b[10];   // An array of 10 floats
                                  // allocated in local address space.
      if (...)
      {
          // example of variable in __local address space but not
          // declared at __kernel function scope.
          __local float c;       // not allowed.
      }
}
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>

        <para>
          Variables allocated in the <function>__local</function> address space inside a
          <function>__kernel</function> function cannot be initialized.
        </para>

<literallayout>
     __kernel void my_func(...)
    {
       local float a = 1;    // not allowed __local float b; b = 1;                // allowed
    }
</literallayout> <para>NOTE: Variables allocated in the <function>__local</function> address
space inside a <function>__kernel</function> function are allocated for each work-group executing
the kernel.</para>
    </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="addressSpaceQualifier">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="global"><refentrytitle>__global</refentrytitle></citerefentry>,
            <citerefentry href="constant"><refentrytitle>__constant</refentrytitle></citerefentry>,
            <citerefentry href="private"><refentrytitle>__private</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>

<!-- 16-Oct-2011 -->
</refentry>

