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

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

        <refpurpose>
            Enqueues a command to execute a kernel on a device.
        </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>
                        clEnqueueTask
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="abstractDataTypes.html">cl_command_queue</link>
                    <parameter>command_queue</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="abstractDataTypes.html">cl_kernel</link>
                    <parameter>kernel</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>
                      <!-- parameter description --> A valid command-queue. The kernel
                      will be queued for execution on the device associated with
                      <varname>command_queue</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> kernel </varname> </term>
                <listitem>
                    <para>
                      <!-- parameter description --> A valid kernel object. The
                      OpenCL context associated with <varname>kernel</varname> and
                      <varname>command_queue</varname> must be the same.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> <!-- parameter name -->
                        num_events_in_wait_list
                    </varname>,
                    <varname>
                        event_wait_list
                    </varname>
                </term>

                <listitem>
                    <para>
                      <!-- parameter description --> Sspecify 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>
                      <!-- parameter description --> Returns an event object that identifies
                      this particular kernel execution instance. Event objects are unique and
                      can be used to identify a particular kernel execution instance later on. If
                      <varname>event</varname> is NULL, no event will be created for this kernel
                      execution instance and therefore it will not be possible for the application
                      to query or queue a wait for this particular kernel execution instance.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
            The kernel is executed using a single work-item.
        </para>

        <para>
          <function>clEnqueueTask</function> is equivalent to calling
          <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry>
          with <varname>work_dim</varname> = 1, <varname>global_work_offset</varname>
          = NULL, <varname>global_work_size</varname>[0] set to 1, and
          <varname>local_work_size</varname>[0] set to 1.
        </para>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          Returns <errorname>CL_SUCCESS</errorname> if the kernel execution was successfully
          queued, or one of the errors below:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_PROGRAM_EXECUTABLE</errorname> if there is no
              successfully built program executable available for device associated with
              <varname>command_queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_COMMAND_QUEUE</errorname> if <varname>command_queue</varname>
              is not a valid command-queue.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_KERNEL</errorname> if <varname>kernel</varname> is not a
              valid kernel object.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if context associated with
              <varname>command_queue</varname> and <varname>kernel</varname> is 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_KERNEL_ARGS</errorname> if the kernel argument values have
              not been specified.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_WORK_GROUP_SIZE</errorname> if a work-group size is
              specified for <varname>kernel</varname> using the <constant><citerefentry
              href="functionQualifiers"><refentrytitle>__attribute__</refentrytitle></citerefentry>
              ((reqd_work_group_size(X, Y, Z)))</constant> qualifier in program source and is
              not (<constant>1</constant>, <constant>1</constant>, <constant>1</constant>).
            </listitem>

            <listitem>
              <errorname>CL_MISALIGNED_SUB_BUFFER_OFFSET</errorname> if a sub-buffer object
              is specified as the value for an argument that is a buffer object and the
              <varname>offset</varname> specified when the sub-buffer object is created is not
              aligned to <constant>CL_DEVICE_MEM_BASE_ADDR_ALIGN</constant> value for device
              associated with <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_IMAGE_SIZE</errorname> if an image object is specified
              as an argument value and the image dimensions (image width, height, specified
              or compute row and/or slice pitch) are not supported by device associated with
              <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_IMAGE_FORMAT</errorname> if an image object is specified
              as an argument value and the image format (image channel order and data type)
              is not supported by device associated with <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to queue the
              execution instance of <varname>kernel</varname> on the command-queue because of
              insufficient resources needed to execute the kernel.
            </listitem>

            <listitem>
              <errorname>CL_MEM_OBJECT_ALLOCATION_FAILURE</errorname> if there is a failure to
              allocate memory for data store associated with image or buffer objects specified
              as arguments to <varname>kernel</varname>.
            </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_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="clEnqueueTask">OpenCL Specification</olink>
        </para>
    </refsect1>

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

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

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