<?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>.
                    </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_DEVICE_MAX_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.
                        The values in <code class="varname">local_work_size</code> 
                        need not evenly divide the 
                        <code class="varname">global_work_size</code> in any dimension. 
                        In this case, 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 workgroups 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. Workgroup 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, 
                        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 using the <code class="code"><a class="citerefentry" href="attribute.html"><span class="citerefentry"><span class="refentrytitle">__attribute__</span></span></a>
                      ((reqd_work_group_size(X, Y, Z)))</code> qualifier. In this case the size
                      of work group specified by <code class="varname">local_work_size</code> must match the
                      value specified by the <code class="code">reqd_work_group_size</code> <a class="citerefentry" href="attribute.html"><span class="citerefentry"><span class="refentrytitle">__attribute__</span></span></a> qualifier.
                    </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 execution 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> is 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
              <code class="varname">global_work_size</code> is NULL, or 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] are 0 or 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 work-group size for <code class="varname">kernel</code> in the program source given by the 
              <code class="code"><a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">__attribute__</span></span></a>
              ((reqd_work_group_size(X, Y, Z)))</code> qualifier.
            </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_DEVICE_MAX_WORK_GROUP_SIZE</code> 
                in the table of OpenCL Device Queries for
              <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>.
            </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 NULL and
              the <code class="code"><a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">__attribute__</span></span></a> ((reqd_work_group_size(X,
              Y, Z)))</code> qualifier is used to declare the 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_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_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>.
            </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.0.pdf#page=224" 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-2013 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>
