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

    <refmeta>
        <refentrytitle>
            clEnqueueMigrateMemObjects
        </refentrytitle>

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

        <refpurpose>
            Enqueues a command to indicate which device a set of memory objects should be associated with.
        </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>clEnqueueMigrateMemObjects </function>
                </funcdef>
                    <paramdef>
                        <link xlink:href="abstractDataTypes.html">cl_command_queue</link>
                        <parameter>command_queue</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="abstractDataTypes.html">cl_uint</link>
                        <parameter>num_mem_objects</parameter>
                    </paramdef>
                    <paramdef>const
                        <link xlink:href="abstractDataTypes.html">cl_mem</link>
                        <parameter>*mem_objects</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="enums.html#cl_mem_migration_flags">cl_mem_migration_flags</link>
                        <parameter>flags</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="scalarDataTypes.html">cl_uint</link>
                        <parameter>num_events_in_wait_list</parameter>
                    </paramdef>
                    <paramdef>const
                        <link xlink:href="abstractDataTypes.html">cl_event</link>
                        <parameter>*event_wait_list</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="abstractDataTypes.html">cl_event</link>
                        <parameter>*event</parameter>
                    </paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term> <varname> command_queue </varname> </term>
                <listitem>
                    <para>
                      A valid command-queue. The specified set of memory objects in
                      <varname>mem_objects</varname> will be migrated to the OpenCL device
                      associated with <varname>command_queue</varname> or to the host if the
                      <constant>CL_MIGRATE_MEM_OBJECT_HOST</constant> has been specified.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> num_mem_objects </varname> </term>
                <listitem>
                    <para>
                        The number of memory objects specified in <varname>mem_objects</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> mem_objects </varname> </term>
                <listitem>
                    <para>
                        A pointer to a list of memory objects.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> flags </varname> </term>
                <listitem>
                    <para>
                      A bit-field that is used to specify migration options. The table below
                      describes the possible values for flags.
                    </para>

                    <!-- table 5.10 -->
                    <informaltable frame="all">
                    <tgroup cols="2" align="left" colsep="1" rowsep="1">
                        <colspec colname="col1" colnum="1" />
                        <colspec colname="col2" colnum="2" />
                        <thead>
                            <row>
                                <entry>cl_mem_migration flags</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>

                        <tbody>
                            <row>
                                <entry><constant>CL_MIGRATE_MEM_OBJECT_HOST</constant></entry>
                                <entry>
                                  This flag indicates that the specified set of memory objects
                                  are to be migrated to the host, regardless of the target
                                  command-queue.
                                </entry>
                            </row>

                            <row>
                                <entry><constant>CL_MIGRATE_MEM_OBJECT_-
CONTENT_UNDEFINED</constant></entry>
                                <entry>
                                  This flag indicates that the contents of the set of memory
                                  objects are undefined after migration.  The specified set
                                  of memory objects are migrated to the device associated with
                                  <varname>command_queue</varname> without incurring the overhead
                                  of migrating their contents.
                                </entry>
                            </row>
                        </tbody>
                    </tgroup> </informaltable>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        event_wait_list, num_events_in_wait_list
                    </varname>
                </term>

                <listitem>
                    <para>
                      Specify events that need to complete before this particular
                      command can be executed.  If <varname>event_wait_list</varname>
                      is NULL, then this particular command does not wait on any
                      event to complete.  If <varname>event_wait_list</varname> is
                      NULL, <varname>num_events_in_wait_list</varname> must be 0. If
                      <varname>event_wait_list</varname> is not NULL, the list of events
                      pointed to by <varname>event_wait_list</varname> must be valid
                      and <varname>num_events_in_wait_list</varname> must be greater
                      than 0. The events specified in <varname>event_wait_list</varname>
                      act as synchronization points. The context associated with events in
                      <varname>event_wait_list</varname> and <varname>command_queue</varname> must
                      be the same. The memory associated with <varname>event_wait_list</varname>
                      can be reused or freed after the function returns.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        event
                    </varname>
                </term>

                <listitem>
                    <para>
                      Returns an event object that identifies this particular command and
                      can be used to query or queue a wait for this particular command
                      to complete. <varname>event</varname> can be NULL in which case
                      it will not be possible for the application to query the status of
                      this command or queue a wait for this command to complete.  If the
                      <varname>event_wait_list</varname> and the <varname>event</varname>
                      arguments are not NULL, the <varname>event</varname> argument should not
                      refer to an element of the <varname>event_wait_list</varname> array.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
            This section describes a mechanism for assigning which device an OpenCL memory object
            resides. A user may wish to have more explicit control over the location of their memory objects
            on creation. This could be used to:

            <itemizedlist mark="disc">
                <listitem>Ensure that an object is allocated on a specific device prior to usage.</listitem>
                <listitem>Preemptively migrate an object from one device to another.</listitem>
            </itemizedlist>
        </para>

        <para>
          Typically, memory objects are implicitly migrated to a device
          for which enqueued commands, using the memory object, are targeted.
          <function>clEnqueueMigrateMemObjects</function> allows this migration to be explicitly
          performed ahead of the dependent commands. This allows a user to preemptively change
          the association of a memory object, through regular command queue scheduling, in
          order to prepare for another upcoming command. This also permits an application to
          overlap the placement of memory objects with other unrelated operations before
          these memory objects are needed potentially hiding transfer latencies. Once
          the event, returned from <function>clEnqueueMigrateMemObjects</function>,
          has been marked <constant>CL_COMPLETE</constant> the memory objects specified
          in <varname>mem_objects</varname> have been successfully migrated to the device
          associated with <varname>command_queue</varname>.  The migrated memory object shall
          remain resident on the device until another command is enqueued that either implicitly
          or explicitly migrates it away.
        </para>

        <para>
          <function>clEnqueueMigrateMemObjects</function> can also be used to direct the initial
          placement of a memory object, after creation, possibly avoiding the initial overhead
          of instantiating the object on the first enqueued command to use it.
        </para>

        <para>
          The user is responsible for managing the event dependencies, associated with this
          command, in order to avoid overlapping access to memory objects. Improperly specified
          event dependencies passed to <function>clEnqueueMigrateMemObjects</function> could
          result in undefined results.
        </para>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          <function>clEnqueueMigrateMemObjects</function> 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_COMMAND_QUEUE</errorname> if <varname>command_queue</varname>
              is not a valid <varname>command_queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if the context associated with
              <varname>command_queue</varname> and memory objects in <varname>memobj</varname>
              are not the same or if the context associated with <varname>command_queue</varname>
              and events in <varname>event_wait_list</varname> are not the same.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_MEM_OBJECT</errorname> if any of the memory objects in
                <varname>mem_objs</varname> is not a valid memory object.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if <varname>num_mem_objects</varname>
                is zero or if <varname>mem_objects</varname> is NULL.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if <varname>flags</varname> is
                not 0 or is not any of the values described in the table above.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EVENT_WAIT_LIST</errorname>
              if <varname>event_wait_list</varname> is NULL and
              <varname>num_events_in_wait_list</varname> &gt; 0,
              or <varname>event_wait_list</varname> is not NULL and
              <varname>num_events_in_wait_list</varname> is 0, or if event objects in
              <varname>event_wait_list</varname> are not valid events.
            </listitem>

            <listitem>
              <errorname>CL_MEM_OBJECT_ALLOCATION_FAILURE</errorname> if there is a
              failure to allocate memory for the specified set of memory objects in
              <varname>mem_objects</varname>.
            </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="clEnqueueMigrateMemObjects">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clEnqueueMapBuffer</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueMapImage</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>

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

