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

    <refmeta>                                    
        <refentrytitle>async_work_group_copy</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</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>2</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>
                    event_t
                    <function>                   
                        async_work_group_copy
                    </function>
                </funcdef>
				<paramdef>__local gentype<parameter>*dst</parameter></paramdef>	
				<paramdef>const __global gentype<parameter>*src</parameter></paramdef>
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link>
					<parameter>num_elements</parameter></paramdef>	
				<paramdef><link xlink:href="otherDataTypes.html">event_t</link><parameter>event</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>   

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    event_t
                    <function>                   
                        async_work_group_copy
                    </function>
                </funcdef>
				<paramdef>__global gentype<parameter>*dst</parameter></paramdef>	
				<paramdef>const __local gentype<parameter>*src</parameter></paramdef>
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>num_elements</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>
		The OpenCL C programming language implements these functions that provide asynchronous copies between global and local memory and a prefetch from global memory. 
		</para>
        <para>
		Perform an async copy of <varname>num_elements</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 workgroup
executing the kernel with the same
argument values; otherwise the results are
undefined.
		</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
barrier before performing the copy.
		</para>
    </refsect1>


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

    <refsect1 id="notes"><title>Notes</title>
       <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.
	  </para>
  <para>
	  The generic type name <type>gentype</type> indicates the built-in data types <type>char</type>,  <type>char{2|4|8|16}</type>, <type>uchar</type>, <type>uchar{2|4|8|16}</type>, <type>short</type>, <type>short{2|4|8|16}</type>, <type>ushort</type>, <type>ushort{2|4|8|16}</type>, <type>int</type>, <type>int{2|4|8|16}</type>, <type>uint</type>, <type>uint{2|4|8|16}</type>, <type>long</type>, <type>long{2|4|8|16}</type>, <type>ulong</type>, <type>ulong{2|4|8|16}</type> or <type>float</type>, <type>float{2|4|8|16}</type> as the type for the arguments unless otherwise stated.
		</para>
		<para>
		If extended with <citerefentry><refentrytitle>cl_khr_fp64</refentrytitle></citerefentry>, generic type name <type>gentype</type> may indicate <type>double</type> and <type>double{2|4|8|16}</type> as arguments and return values. If extended with <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry>, generic type name <type>gentype</type> may indicate <type>half</type> and <type>half{2|4|8|16}</type> as arguments and return values. 
		</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>, 
<citerefentry><refentrytitle>wait_group_events</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>

</refentry>

