<?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 asyncCopyInc SYSTEM "asyncCopyInc.xml">
<!ENTITY vectorHalfFunctionsInc SYSTEM "vectorHalfFunctionsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>async_work_group_copy</keyword>
        </keywordset>
    </refentryinfo>

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

        <refpurpose>
            Perform an async copy.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="otherDataTypes.html">event_t</link>
                    <function>
                        async_work_group_copy
                    </function>
                </funcdef>
                <paramdef><link xlink:href="local.html">__local</link> gentype<parameter>*dst</parameter></paramdef>
                <paramdef>const <link xlink:href="global.html">__global</link> gentype<parameter>*src</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link>
                    <parameter>num_gentypes</parameter></paramdef>
                <paramdef><link xlink:href="otherDataTypes.html">event_t</link><parameter>event</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="otherDataTypes.html">event_t</link>
                    <function>
                        async_work_group_copy
                    </function>
                </funcdef>
                <paramdef><link xlink:href="global.html">__global</link> gentype<parameter>*dst</parameter></paramdef>
                <paramdef>const <link xlink:href="local.html">__local</link> gentype<parameter>*src</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>num_gentypes</parameter></paramdef>
                <paramdef><link xlink:href="otherDataTypes.html">event_t</link><parameter>event</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

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

        <para>
          <function>async_work_group_copy</function> performs an 
          async copy of <varname>num_gentypes</varname> <type>gentype</type> elements from
          <varname>src</varname> to <varname>dst</varname>. The async copy is performed by all
          work-items in a work-group and this built-in function must therefore be encountered
          by all work-items in a work-group executing the kernel with the same argument values;
          otherwise the results are undefined. This rule applies 
            to ND-ranges implemented with uniform 
            and non-uniform work-groups
        </para>

        <para>
          Returns an event object that can be used by
          <citerefentry><refentrytitle>wait_group_events</refentrytitle></citerefentry> to
          wait for the async copy to finish. The <varname>event</varname> argument can also be
          used to associate the <function>async_work_group_copy</function> with a previous
          async copy allowing an event to be shared by multiple async copies; otherwise
          <varname>event</varname> should be zero.
        </para>

        <para>
          If <varname>event</varname> argument is non-zero, the event object supplied in
          <varname>event</varname> argument will be returned.
        </para>

        <para>
          This function does not perform any implicit synchronization of source data such as
          using a <citerefentry><refentrytitle>barrier</refentrytitle></citerefentry> before
          performing the copy.
        </para>

        &asyncCopyInc;

        &vectorHalfFunctionsInc;

        <para>
            The kernel must wait for the completion of all async copies using the 
            <function>wait_group_events</function> built-in function before 
            exiting; otherwise the behavior is undefined.
        </para>

    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>

      <para>
        <function>async_work_group_copy</function> and
        <function>async_work_group_strided_copy</function> for 3-component
        vector types behave as <function>async_work_group_copy</function> and
        <function>async_work_group_strided_copy</function> respectively for 4-component vector
        types.
      </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="asyncCopyFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="asyncCopyFunctions"><refentrytitle>Async Copy and Prefetch  Functions</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>

<!-- 25-May-2013 -->
</refentry>

