<?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-2010</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> <!-- parameter name -->
                        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> <!-- parameter name -->
                        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> and <varname>event_wait_list</varname>
                </term>

                <listitem>
                    <para> <!-- parameter description -->
                          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 command_queue must be the same.
                    </para>
                </listitem>
            </varlistentry>



            <varlistentry>
                <term>
                    <varname> <!-- parameter name -->
                        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 <errorname><citerefentry href="functionQualifiers"><refentrytitle>__attribute__</refentrytitle></citerefentry>((reqd_work_group_size(X, Y, Z)))</errorname> qualifier in program source and is not (<errorname>1</errorname>, <errorname>1</errorname>, <errorname>1</errorname>).
            </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 CL_DEVICE_MEM_BASE_ADDR_ALIGN 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_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_OUT_OF_RESOURCES</errorname> if there is a failure to allocate resources required by the 
                OpenCL implementation on the device.
            </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> is greater than 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_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>

</refentry>

