<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clEnqueueNDRangeKernel</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clEnqueueNDRangeKernel" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clEnqueueNDRangeKernel"></a>
        <h1>clEnqueueNDRangeKernel</h1>
        <p>
            Enqueues a command to execute a kernel on a device.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a>
                    <strong class="fsfunc">
                        clEnqueueNDRangeKernel
                    </strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_command_queue</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">command_queue</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_kernel</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">kernel</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">work_dim</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*global_work_offset</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*global_work_size</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*local_work_size</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event_wait_list</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term"> <code class="varname"> command_queue </code> </span>
            </dt>
            <dd>
              <p>
                        A valid host command-queue. The kernel will be queued for execution on
                        the device associated with <code class="varname">command_queue</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> kernel </code> </span>
            </dt>
            <dd>
              <p>
                      A valid kernel object. The
                      OpenCL context associated with <code class="varname">kernel</code> and
                      <code class="varname">command_queue</code> must be the same.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> work_dim </code> </span>
            </dt>
            <dd>
              <p>
                      The number of dimensions
                      used to specify the global work-items and work-items in the
                      work-group. <code class="varname">work_dim</code> must be greater than zero and less
                      than or equal to <code class="constant">CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS</code>.
                      If <code class="varname">global_work_size</code> is NULL, or the value in
                      any passed dimension is 0 then the kernel 
                      command will trivially succeed after its event
                      dependencies are satisfied and subsequently 
                      update its completion event. The behavior in this
                      situation is similar to that of an enqueued 
                      marker, except that unlike a marker, an enqueued
                      kernel with no events passed to 
                      <code class="varname">event_wait_list</code> may run at any time.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> global_work_offset </code> </span>
            </dt>
            <dd>
              <p>
                      <code class="varname">global_work_offset</code>
                      can be used to specify an array of <code class="varname">work_dim</code> unsigned
                      values that describe the offset used to calculate the global ID of a
                      work-item. If <code class="varname">global_work_offset</code> is NULL, the global
                      IDs start at offset (0, 0, ... 0).
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> global_work_size </code> </span>
            </dt>
            <dd>
              <p>
                      Points to an array of
                      <code class="varname">work_dim</code> unsigned values that describe the number
                      of global work-items in <code class="varname">work_dim</code> dimensions
                      that will execute the kernel function. The total number of global
                      work-items is computed as <code class="varname">global_work_size</code>[0] *...*
                      <code class="varname">global_work_size</code>[<code class="varname">work_dim</code> - 1].
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> local_work_size </code> </span>
            </dt>
            <dd>
              <p>
                      Points to an array of
                      <code class="varname">work_dim</code> unsigned values that describe the number
                      of work-items that make up a work-group (also referred to as the
                      size of the work-group) that will execute the kernel specified
                      by <code class="varname">kernel</code>.  The total number of work-items in
                      a work-group is computed as <code class="varname">local_work_size</code>[0]
                      *... * <code class="varname">local_work_size</code>[<code class="varname">work_dim</code> -
                      1]. The total number of work-items in the work-group must be less than
                      or equal to the <code class="constant">CL_KERNEL_WORK_GROUP_SIZE</code>
                      value specified in table of OpenCL Device Queries for
                      <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>
                      and the number of work-items specified
                      in <code class="varname">local_work_size</code>[0],...
                      <code class="varname">local_work_size</code>[<code class="varname">work_dim</code> - 1]
                      must be less than or equal to the corresponding values specified
                      by <code class="constant">CL_DEVICE_MAX_WORK_ITEM_SIZES</code>[0],....
                      <code class="constant">CL_DEVICE_MAX_WORK_ITEM_SIZES</code>[<code class="varname">work_dim</code>
                      - 1].  The explicitly specified <code class="varname">local_work_size</code>
                      will be used to determine how to break the global work-items specified
                      by <code class="varname">global_work_size</code> into appropriate work-group
                      instances.
                    </p>
              <p>
                        Enabling non-uniform work-groups requires a 
                        kernel to be compiled with the -cl-std=CL2.0 flag
                        and without the -cl-uniform-work-group-size 
                        flag. If the program was created using
                        clLinkProgram and any of the linked programs 
                        were compiled in a way that only supports
                        uniform work-group sizes, the linked program 
                        only supports uniform work group sizes. If
                        local_work_size is specified and the OpenCL 
                        kernel is compiled without non-uniform work-
                        groups enabled, the values specified in 
                        global_work_size[0], ... global_work_size[work_dim - 1]
                        must be evenly divisible by the corresponding 
                        values specified in local_work_ size[0], ...
                        local_work_size[work_dim – 1].
                    </p>
              <p>
                        If non-uniform work-groups are enabled for the 
                        kernel, any single dimension for which the
                        global size is not divisible by the local size 
                        will be partitioned into two regions. One region will
                        have work-groups that have the same number of 
                        work items as was specified by the local size
                        parameter in that dimension. The other region 
                        will have work-groups with less than the number
                        of work items specified by the local size 
                        parameter in that dimension. The global IDs and group
                        IDs of the work items in the first region will 
                        be numerically lower than those in the second, and
                        the second region will be at most one work-group 
                        wide in that dimension. Work-group sizes
                        could be non-uniform in multiple dimensions, 
                        potentially producing work-groups of up to 4
                        different sizes in a 2D range and 8 different 
                        sizes in a 3D range.
                    </p>
              <p>
                        If <code class="varname">local_work_size</code> is NULL and the 
                        kernel is compiled without support for non-uniform work-
                        groups, the OpenCL runtime will implement the 
                        ND-range with uniform work-group sizes. If
                        <code class="varname">local_work_size</code> is NULL and 
                        non-uniform-work-groups are enabled, the OpenCL runtime is
                        free to implement the ND-range using uniform or 
                        non-uniform work-group sizes, regardless of
                        the divisibility of the global work size. If the 
                        ND-range is implemented using non-uniform
                        work-group sizes, the work-group sizes, global 
                        IDs and group IDs will follow the same pattern
                        as described in above paragraph.
                    </p>
              <p>
                        The work-group size to be used for 
                        <code class="varname">kernel</code> can also be 
                        specified in the program source or
                        intermediate language. In this case the size 
                        of work group specified by <code class="varname">local_work_size</code> must
                        match the value specified in the program source.
                    </p>
              <p>
                      These work-group instances are executed in parallel across multiple compute units or
                      concurrently on the same compute unit.
                    </p>
              <p>
                      Each work-item is uniquely identified by a global identifier. The global ID,
                      which can be read inside the kernel, is computed using the value given by
                      <code class="varname">global_work_size</code> and <code class="varname">global_work_offset</code>.
                      In addition, a work-item is also identified within a work-group by a unique local ID.
                      The local ID, which can also be read by the kernel, is computed using the value given
                      by <code class="varname">local_work_size</code>. The starting local ID is always (0, 0, ... 0).
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">event_wait_list</code> and
                    <code class="varname">num_events_in_wait_list</code>
                </span>
            </dt>
            <dd>
              <p>
                      Specify events that need
                      to complete before this particular command can be executed. If
                      <code class="varname">event_wait_list</code> is NULL, then this particular command does
                      not wait on any event to complete. If <code class="varname">event_wait_list</code>
                      is NULL, <code class="varname">num_events_in_wait_list</code> must be 0. If
                      <code class="varname">event_wait_list</code> is not NULL, the list of events
                      pointed to by <code class="varname">event_wait_list</code> must be valid
                      and <code class="varname">num_events_in_wait_list</code> must be greater
                      than 0.  The events specified in <code class="varname">event_wait_list</code>
                      act as synchronization points. The context associated with events in
                      <code class="varname">event_wait_list</code> and <code class="varname">command_queue</code> must
                      be the same.  The memory associated with <code class="varname">event_wait_list</code>
                      can be reused or freed after the function returns.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> event </code> </span>
            </dt>
            <dd>
              <p>
                      Returns an event object that identifies
                      this particular kernel-instance. Event objects are unique and
                      can be used to identify a particular kernel execution instance later on. If
                      <code class="varname">event</code> 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.
                        If the <code class="varname">event_wait_list</code> and the 
                        <code class="varname">event</code> arguments are not NULL, the 
                        <code class="varname">event</code> argument 
                        should not refer to an element of the 
                        <code class="varname">event_wait_list</code> array.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
            Returns <span class="errorname">CL_SUCCESS</span> if the kernel execution was successfully queued.
            Otherwise, it returns one of the following errors:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PROGRAM_EXECUTABLE</span> 
                if there is no successfully built program
                executable available for device associated with <code class="varname">command_queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_COMMAND_QUEUE</span> if <code class="varname">command_queue</code>
                 is not a valid host command-queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_KERNEL</span> if <code class="varname">kernel</code> is
                not a valid kernel object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if context associated with
              <code class="varname">command_queue</code> and <code class="varname">kernel</code> are not the same
              or if the context associated with <code class="varname">command_queue</code> and events in
              <code class="varname">event_wait_list</code> are not the same.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_KERNEL_ARGS</span> if the kernel argument values
                have not been specified or if 
                a kernel argument declared to be a pointer to a 
                type does not point to a named address space.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_DIMENSION</span> if <code class="varname">work_dim</code>
              is not a valid value (i.e. a value between 1 and 3).
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GLOBAL_WORK_SIZE</span> if
              any of the values specified in
              <code class="varname">global_work_size</code>[0], ...<code class="varname">global_work_size</code>
              [<code class="varname">work_dim</code> - 1] exceed the range given by the
              <code class="code">sizeof(size_t)</code> for the device on which the kernel execution will
              be enqueued.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GLOBAL_OFFSET</span> if the value specified
              in <code class="varname">global_work_size</code> + the corresponding values in
              <code class="varname">global_work_offset</code> for any dimensions is greater than the
              <code class="code">sizeof(size_t)</code> for the device on which the kernel execution will
              be enqueued.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_GROUP_SIZE</span> if 
              <code class="varname">local_work_size</code> is specified and does not match 
              the required work-group size for <code class="varname">kernel</code> in the program source.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_GROUP_SIZE</span> if 
                <code class="varname">local_work_size</code> is specified and is not
                consistent with the required number of sub-groups for 
                <code class="varname">kernel</code> in the program source.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_GROUP_SIZE</span>
                if <code class="varname">local_work_size</code> is 
                specified and the total number
                of work-items in the work-group computed as 
                <code class="varname">local_work_size</code>[0] * ...
                <code class="varname">local_work_size</code>[<code class="varname">work_dim</code> – 1] 
                is greater than the value specified by
                <code class="constant">CL_KERNEL_WORK_GROUP_SIZE</code> in table 5.21.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_GROUP_SIZE</span> if the program was compiled 
              with <code class="code">–cl-uniform-work-group-size</code> and the number of work-items 
              specified by <code class="varname">global_work_size</code> is not 
              evenly divisible by size of work-group given by <code class="varname">local_work_size</code>
                or by the required work-
                group size specified in the kernel source.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_WORK_ITEM_SIZE</span> if the number of
              work-items specified in any of <code class="varname">local_work_size</code>[0],
              ...  <code class="varname">local_work_size</code>[<code class="varname">work_dim</code>
              - 1] is greater than the corresponding values specified by
              <code class="constant">CL_DEVICE_MAX_WORK_ITEM_SIZES</code>[0], ....
              <code class="constant">CL_DEVICE_MAX_WORK_ITEM_SIZES</code>[<code class="varname">work_dim</code>
              - 1].
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_MISALIGNED_SUB_BUFFER_OFFSET</span> if a sub-buffer object
              is specified as the value for an argument that is a buffer object and the
              <code class="varname">offset</code> specified when the sub-buffer object is created is not
              aligned to <code class="constant">CL_DEVICE_MEM_BASE_ADDR_ALIGN</code> value for device
              associated with <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_SIZE</span> 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
              <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_IMAGE_FORMAT_NOT_SUPPORTED</span> 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 <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to queue the
              execution instance of <code class="varname">kernel</code> on the command-queue because of
              insufficient resources needed to execute the kernel.  For example, the explicitly
              specified <code class="varname">local_work_size</code> causes a failure to execute the kernel
              because of insufficient resources such as registers or local memory. Another example
              would be the number of read-only image args used in <code class="varname">kernel</code>
              exceed the <code class="constant">CL_DEVICE_MAX_READ_IMAGE_ARGS</code> value for
              device or the number of write-only image args used in <code class="varname">kernel</code>
              exceed the <code class="constant">CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS</code> value for
              device or the number of samplers used in <code class="varname">kernel</code> exceed
              <code class="constant">CL_DEVICE_MAX_SAMPLERS</code> for device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_MEM_OBJECT_ALLOCATION_FAILURE</span> if there is a failure to
              allocate memory for data store associated with image or buffer objects specified
              as arguments to <code class="varname">kernel</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_EVENT_WAIT_LIST</span>
              if <code class="varname">event_wait_list</code> is NULL and
              <code class="varname">num_events_in_wait_list</code> &gt; 0,
              or <code class="varname">event_wait_list</code> is not NULL and
              <code class="varname">num_events_in_wait_list</code> is 0, or if event objects in
              <code class="varname">event_wait_list</code> are not valid events.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if SVM 
                pointers are passed as arguments to a kernel and the 
                device does not support SVM or if system 
                pointers are passed as arguments to a kernel 
                and/or stored inside SVM allocations passed as 
                kernel arguments and the device does not 
                support fine grain system SVM allocations.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1.pdf#page=242" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clCreateCommandQueueWithProperties.html"><span class="citerefentry"><span class="refentrytitle">clCreateCommandQueueWithProperties</span></span></a>, 
            <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>,
            <a class="citerefentry" href="clEnqueueNativeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNativeKernel</span></span></a>,
            <a class="citerefentry" href="workItemFunctions.html"><span class="citerefentry"><span class="refentrytitle">Work-Item Functions</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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.
</div>
    </div>
  </body>
</html>
