<?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>clGetDeviceInfo</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clGetDeviceInfo" />
  </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="clGetDeviceInfo"></a>
        <h1>clGetDeviceInfo</h1>
        <p>Get information about an OpenCL 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">clGetDeviceInfo</strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_device_id</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">device</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_device_info" target="pagedisplay">cl_device_info</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">param_name</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <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">param_value_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">void</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*param_value</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <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">*param_value_size_ret</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">device</code>
              </span>
            </dt>
            <dd>
              <p>
                  May be a device returned by
                  <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>
                  or a sub-device created by
                  <a class="citerefentry" href="clCreateSubDevices.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubDevices</span></span></a>.
                  If <code class="varname">device</code> is a sub-device, the specific information for
                  the sub-device will be returned. The information that can be queried using
                  <code class="function">clGetDeviceInfo</code> is specified in the table below.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">param_value</code>
              </span>
            </dt>
            <dd>
              <p>
                  A pointer to memory location where appropriate values for a given
                  <code class="varname">param_name</code> as specified in the table below will be
                  returned. If <code class="varname">param_value</code> is NULL, it is ignored.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">param_value_size</code>
              </span>
            </dt>
            <dd>
              <p>
                  Specifies the size in bytes of memory pointed to by
                  <code class="varname">param_value</code>.  This size in bytes must be ≥ size of
                  return type specified in the table below.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">param_value_size_ret</code>
              </span>
            </dt>
            <dd>
              <p>
                  Returns the actual size in bytes of data being queried by
                  <code class="varname">param_value</code>. If <code class="varname">param_value_size_ret</code>
                  is NULL, it is ignored.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">param_name</code>
              </span>
            </dt>
            <dd>
              <p>
                  An enumeration constant that identifies the device information being queried. It
                  can be one of the values as specified in the table below.
                </p>
            </dd>
            <dt>
              <span class="term"></span>
            </dt>
            <dd>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_device_info</th>
                      <th align="left">Return Type</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_ADDRESS_BITS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      The default compute device address space size specified as an unsigned
                      integer value in bits. Currently supported values are 32 or 64 bits.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_AVAILABLE</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if the device is available and
                      <code class="constant">CL_FALSE</code> if the device is not available.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_BUILT_IN_KERNELS</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      A semi-colon separated list of built-in kernels supported by the device.
                      An empty string is returned if no built-in kernels are supported by
                      the device.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_COMPILER_AVAILABLE</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_FALSE</code> if the implementation does
                      not have a compiler available to compile the program source.
                      Is <code class="constant">CL_TRUE</code> if the compiler is available. This can
                      be <code class="constant">CL_FALSE</code> for the embedded platform profile only.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_DOUBLE_FP_CONFIG</code>
                      </td>
                      <td align="left">
                        <p>cl_device_-</p>
                        <p>fp_config</p>
                      </td>
                      <td align="left">
                      Describes double precision floating-point capability of the
                      OpenCL device.  This is a bit-field that describes one or more of the following values:
                      <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_DENORM</code> - denorms are supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_INF_NAN</code> - INF and NaNs are supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_NEAREST</code> - round to nearest even rounding mode supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_ZERO</code> - round to zero rounding mode supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_INF</code> -
                            round to positive and negative infinity rounding modes supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_FMA</code> - IEEE754-2008 fused multiply-add is supported. </li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_SOFT_FLOAT</code> -  Basic floating-point operations (such as
                            addition, subtraction, multiplication) are implemented in software.</li></ul></div>

                      <p>
                        Double precision is an optional feature so the mandated minimum double
                        precision floating-point capability is 0.
                      </p>

                      <p>
                        If double precision is supported by the device, then the minimum double
                        precision floatingpoint capability must be: <code class="constant">CL_FP_FMA</code>
                        |  <code class="constant">CL_FP_ROUND_TO_NEAREST</code>
                        | <code class="constant">CL_FP_ROUND_TO_ZERO</code>
                        | <code class="constant">CL_FP_ROUND_TO_INF</code> |
                        <code class="constant">CL_FP_INF_NAN</code> | <code class="constant">CL_FP_DENORM</code>.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_ENDIAN_LITTLE</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if the OpenCL device is a little endian
                      device and <code class="constant">CL_FALSE</code> otherwise.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_ERROR_CORRECTION_SUPPORT</code>
                      </td>
                      <td align="left">Return type: cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if the device implements error correction
                      for all accesses to compute device memory (global and constant).
                      Is <code class="constant">CL_FALSE</code> if the device does not implement such
                      error correction.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_EXECUTION_CAPABILITIES</code>
                      </td>
                      <td align="left"> <p>cl_device_-</p><p>exec_capabilities</p> </td>
                      <td align="left">
                      Describes the execution capabilities of the device. This is
                      a bit-field that describes one or more of the following values:
                      <p><code class="constant">CL_EXEC_KERNEL</code> - The OpenCL device can execute
                      OpenCL kernels.</p> <p><code class="constant">CL_EXEC_NATIVE_KERNEL</code>
                      - The OpenCL device can execute native kernels.</p> <p>The mandated
                      minimum capability is <code class="constant">CL_EXEC_KERNEL</code>.</p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_EXTENSIONS</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      Returns a space separated list of extension names (the extension names themselves do
                      not contain any spaces) supported by the device. The list of extension names returned
                      can be vendor supported extension names and one or more of  the following Khronos
                      approved extension names:

                      <p>
                        </p><div class="literallayout"><p><br />
<a class="citerefentry" href="cl_khr_int64_base_atomics.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_int64_base_atomics</span></span></a><br />
<a class="citerefentry" href="cl_khr_int64_extended_atomics.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_int64_extended_atomics</span></span></a><br />
<a class="citerefentry" href="cl_khr_fp16.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp16</span></span></a><br />
<a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a><br />
<a class="citerefentry" href="cl_khr_gl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_event</span></span></a><br />
<a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a><br />
<a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a><br />
<a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a><br />
                        </p></div><p>
                      </p>
                    </td>
                      <td align="left">
                      The following approved Khronos extension names must be returned by all device that support OpenCL C 1.2:
                      <p>
                        </p><div class="literallayout"><p><br />
                        cl_khr_global_int32_base_atomics<br />
                        cl_khr_global_int32_extended_atomics<br />
                        cl_khr_local_int32_base_atomics<br />
                        cl_khr_local_int32_extended_atomics<br />
                        cl_khr_byte_addressable_store<br />
                        cl_khr_fp64<br />
                            (for backward compatibility if double precision is supported)<br />
                        </p></div><p>
                      </p>

                      <p>
                       Please refer to the OpenCL 1.2 Extension Specification for a detailed description of these extensions.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_GLOBAL_MEM_CACHE_SIZE</code>
                      </td>
                      <td align="left">cl_ulong</td>
                      <td align="left">Size of global memory cache in bytes.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_GLOBAL_MEM_CACHE_TYPE</code>
                      </td>
                      <td align="left"> <p>cl_device_mem-</p><p>_cache_type</p> </td>
                      <td align="left">
                      Type of global memory cache supported. Valid values are:
                      <code class="constant">CL_NONE</code>, <code class="constant">CL_READ_ONLY_CACHE</code>,
                      and <code class="constant">CL_READ_WRITE_CACHE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">Size of global memory cache line in bytes.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_GLOBAL_MEM_SIZE</code>
                      </td>
                      <td align="left">cl_ulong</td>
                      <td align="left">Size of global device memory in bytes.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_HALF_FP_CONFIG</code>
                      </td>
                      <td align="left">
                        <p>cl_device_-</p>
                        <p>fp_config</p>
                      </td>
                      <td align="left">
                      Describes the OPTIONAL half precision floating-point capability of the
                      OpenCL device. This is a bit-field that describes one or more of the following values:

                      <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_DENORM</code> - denorms are supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_INF_NAN</code> - INF and NaNs are supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_NEAREST</code> - round to nearest even rounding mode supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_ZERO</code> - round to zero rounding mode supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_ROUND_TO_INF</code> - round
                    to +ve and -ve infinity rounding modes supported.</li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_FMA</code> - IEEE754-2008 fused multiply-add is supported. </li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_FP_SOFT_FLOAT</code> - Basic floating-point operations
                        (such as addition, subtraction, multiplication) are implemented in software.</li></ul></div>

                      <p>
                        The required minimum half precision floating-point capability as
                        implemented by this extension is <code class="constant">CL_FP_ROUND_TO_ZERO</code>
                        or <code class="constant">CL_FP_ROUND_TO_INF</code> |
                        <code class="constant">CL_FP_INF_NAN</code>.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_HOST_UNIFIED_MEMORY</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if the device and the host have a unified
                      memory subsystem and is <code class="constant">CL_FALSE</code> otherwise.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if images are supported by the OpenCL
                      device and <code class="constant">CL_FALSE</code> otherwise.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE2D_MAX_HEIGHT</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max height of 2D image in pixels. The minimum value is 8192 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE2D_MAX_WIDTH</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max width of 2D image or 1D image not created from a buffer object in pixels.
                      The minimum value is 8192 if <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
                      is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE3D_MAX_DEPTH</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max depth of 3D image in pixels. The minimum value is 2048 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE3D_MAX_HEIGHT</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max height of 3D image in pixels. The minimum value is 2048 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE3D_MAX_WIDTH</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max width of 3D image in pixels. The minimum value is 2048 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE_MAX_BUFFER_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max number of pixels for a 1D image created from a buffer object.
                      The minimum value is 65536 if <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
                      is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_IMAGE_MAX_ARRAY_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max number of images in a 1D or 2D image array.  The minimum value is 2048 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_LINKER_AVAILABLE</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_FALSE</code> if the implementation does not
                      have a linker available.  Is <code class="constant">CL_TRUE</code> if the
                      linker is available. This can be <code class="constant">CL_FALSE for the embedded
                      platform profile only. This must be <code class="constant">CL_TRUE</code> if
                      <code class="constant">CL_DEVICE_COMPILER_AVAILABLE</code> is CL_TRUE</code>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_LOCAL_MEM_SIZE</code>
                      </td>
                      <td align="left">cl_ulong</td>
                      <td align="left">
                      Size of local memory arena in bytes. The minimum value is 32 KB for
                      devices that are not of type <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_LOCAL_MEM_TYPE</code>
                      </td>
                      <td align="left"> <p>cl_device_-</p><p>local_mem_type</p></td>
                      <td align="left">
                      Type of local memory supported. This can be set to
                      <code class="constant">CL_LOCAL</code> implying dedicated local memory storage
                      such as SRAM, or <code class="constant">CL_GLOBAL</code>.  For custom devices,
                      <code class="constant">CL_NONE</code> can also be returned indicating no local
                      memory support.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_CLOCK_FREQUENCY</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">Maximum configured clock frequency of the device in MHz.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_COMPUTE_UNITS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      The number of parallel compute units on the OpenCL device.  A work-group executes
                      on a single compute unit. The minimum value is 1.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_CONSTANT_ARGS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Max number of arguments declared with the <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a>
                      qualifier in a kernel. The minimum value is 8 for devices that are not
                      of type <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE</code>
                      </td>
                      <td align="left">cl_ulong</td>
                      <td align="left">
                      Max size in bytes of a constant buffer allocation.  The
                      minimum value is 64 KB for devices that are not of type
                      <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_MEM_ALLOC_SIZE</code>
                      </td>
                      <td align="left">cl_ulong</td>
                      <td align="left">
                      Max size of memory object allocation in bytes. The minimum value is max (1/4th
                      of <code class="constant">CL_DEVICE_GLOBAL_MEM_SIZE</code>, 128*1024*1024) for devices
                      that are not of type <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_PARAMETER_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Max size in bytes of the arguments that can be passed to a
                      kernel. The minimum value is 1024 for devices that are not of type
                      <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.  For this minimum value,
                      only a maximum of 128 arguments can be passed to a kernel.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_READ_IMAGE_ARGS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Max number of simultaneous image objects that can be read by a kernel. The
                      minimum value is 128 if <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
                      is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_SAMPLERS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Maximum number of samplers that can be used in a kernel.  The minimum
                      value is 16 if <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
                      is <code class="constant">CL_TRUE</code>.  (Also see
                      <a class="citerefentry" href="sampler_t.html"><span class="citerefentry"><span class="refentrytitle">sampler_t</span></span></a>.)
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_WORK_GROUP_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Maximum number of work-items in a work-group executing a kernel on a
                      single compute unit, using the data parallel execution model. (Refer to
                      <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>).
                      The minimum value is 1.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Maximum dimensions that specify the global and local
                      work-item IDs used by the data parallel execution model. (Refer to
                      <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>).
                      The minimum value is 3 for devices that are not of type
                      <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_WORK_ITEM_SIZES</code>
                      </td>
                      <td align="left">size_t[]</td>
                      <td align="left">
                      <p>
                        Maximum number of work-items that can be
                        specified in each dimension of the work-group to
                        <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>.
                      </p>

                      <p>
                        Returns <code class="varname">n</code> size_t entries, where
                        <code class="varname">n</code> is the value returned by the query for
                        <code class="constant">CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS</code>.
                      </p>

                      <p>
                        The minimum value is (1, 1, 1) for devices that are not of type
                        <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MAX_WRITE_IMAGE_ARGS</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Max number of simultaneous image objects that can
                      be written to by a kernel. The minimum value is 8 if
                      <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> is <code class="constant">CL_TRUE</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MEM_BASE_ADDR_ALIGN</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      The minimum value is the size (in bits) of the largest OpenCL built-in
                      data type supported by the device (<span class="type">long16</span> in FULL profile,
                      <span class="type">long16</span> or <span class="type">int16</span> in EMBEDDED profile) for devices
                      that are not of type <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Deprecated in OpenCL 1.2. The smallest alignment in bytes which can be
                      used for any data type.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_NAME</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">Device name string.</td>
                    </tr>
                    <tr>
                      <td align="left"><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR</code>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT</code></p>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_INT</code></p>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG</code></p>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT</code></p>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE</code></p>
                      <p><code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF</code></p></td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      <p>
                        Returns the native ISA vector width. The vector width is defined as
                        the number of scalar elements that can be stored in the vector.
                      </p>

                      <p>
                        If double precision is not supported,
                        <code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE</code> must return 0.
                      </p>

                      <p>
                        If the
                        <a class="citerefentry" href="cl_khr_fp16.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp16</span></span></a>
                        extension is not supported,
                        <code class="constant">CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF</code> must return 0.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_OPENCL_C_VERSION</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      <p>
                        OpenCL C version string. Returns the highest OpenCL C version
                        supported by the compiler for this device that is not of type
                        <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>. This version string has
                        the following format:
                      </p>

                      <p>
                        <code class="varname">
                        OpenCL&lt;space&gt;C&lt;space&gt;&lt;major_version.minor_version&gt;&lt;space&gt;&lt;vendor-specific
                        information&gt; </code>
                      </p>

                      <p>
                        The <code class="varname">major_version.minor_version</code> value returned must
                        be 1.2 if <code class="constant">CL_DEVICE_VERSION</code> is OpenCL 1.2.
                      </p>

                      <p>
                        The <code class="varname">major_version.minor_version</code> value returned must
                        be 1.1 if <code class="constant">CL_DEVICE_VERSION</code> is OpenCL 1.1.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PARENT_DEVICE</code>
                      </td>
                      <td align="left">cl_device_id</td>
                      <td align="left">
                      Returns the cl_device_id of the parent device to which this sub-device
                      belongs.  If device is a root-level device, a NULL value is returned.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PARTITION_MAX_SUB_DEVICES</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Returns the maximum number of sub-devices that can be created
                      when a device is partitioned. The value returned cannot exceed
                      <code class="constant">CL_DEVICE_MAX_COMPUTE_UNITS</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PARTITION_PROPERTIES</code>
                      </td>
                      <td align="left">
                        <p>cl_device_partit-</p>
                        <p>ion_property[]</p>
                      </td>
                      <td align="left">
                      Returns the list of partition types supported by device. This is an array of
                      <code class="varname">cl_device_partition_property</code> values drawn from the following list:
                      <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_PARTITION_EQUALLY</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_PARTITION_BY_COUNTS</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN</code></li></ul></div>
                      If the device does not support any partition types, a value of 0 will be returned.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PARTITION_AFFINITY_DOMAIN</code>
                      </td>
                      <td align="left">
                        <p>cl_device_aff-</p>
                        <p>inity_domain</p>
                      </td>
                      <td align="left">
                      Returns the list of supported affinity domains for partitioning the device using
                      <code class="constant">CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN</code>.
                      This is a bit-field that describes one or more of the following values:
                      <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_NUMA</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE</code></li><li class="listitem" style="list-style-type: disc"><code class="constant">CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE</code></li></ul></div>
                      If the device does not support any affinity domains, a value of 0 will be returned.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PARTITION_TYPE</code>
                      </td>
                      <td align="left">
                        <p>cl_device_part-</p>
                        <p>ition_property[]</p>
                      </td>
                      <td align="left">
                      Returns the properties argument specified in
                      <a class="citerefentry" href="clCreateSubDevices.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubDevices</span></span></a>
                      if <code class="varname">device</code> is a subdevice. Otherwise the implementation
                      may either return a <code class="varname">param_value_size_ret</code> of 0 i.e. there
                      is no partition type associated with <code class="varname">device</code> or can
                      return a property value of 0 (where 0 is used to terminate the partition
                      property list) in the memory that <code class="varname">param_value</code> points to.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PLATFORM</code>
                      </td>
                      <td align="left">
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">cl_platform_id</a>
                      </td>
                      <td align="left">The platform associated with this device.</td>
                    </tr>
                    <tr>
                      <td align="left"><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR</code>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT</code></p>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT</code></p>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG</code></p>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT</code></p>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE</code></p>
                      <p><code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF</code></p></td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      <p>
                        Preferred native vector width size for built-in scalar types that can
                        be put into vectors. The vector width is defined as the number of scalar
                        elements that can be stored in the vector.
                      </p>

                      <p>
                        If double precision is not supported,
                        <code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE</code> must return 0.
                      </p>

                      <p>
                        If the
                        <a class="citerefentry" href="cl_khr_fp16.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp16</span></span></a>
                        extension is not supported,
                        <code class="constant">CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF</code> must return 0.
                      </p>

                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PRINTF_BUFFER_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                      Maximum size of the internal buffer that holds the output of <a class="citerefentry" href="printfFunction.html"><span class="citerefentry"><span class="refentrytitle">printf</span></span></a>
                      calls from a kernel.  The minimum value for the FULL profile is 1 MB.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PREFERRED_INTEROP_USER_SYNC</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">
                      Is <code class="constant">CL_TRUE</code> if the device's preference is for the user
                      to be responsible for synchronization, when sharing memory objects between
                      OpenCL and other APIs such as DirectX, <code class="constant">CL_FALSE</code> if the
                      device / implementation has a performant path for performing synchronization
                      of memory object shared between OpenCL and other APIs such as DirectX
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PROFILE</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      <p>
                        OpenCL profile string. Returns the profile name supported by the device
                        (see note).  The profile name returned can be one of the following strings:
                      </p>

                      <p>
                        FULL_PROFILE - if the device supports the OpenCL specification
                        (functionality defined as part of the core specification and does not
                        require any extensions to be supported).
                      </p>

                      <p>
                        EMBEDDED_PROFILE - if the device supports the OpenCL embedded profile.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_PROFILING_TIMER_RESOLUTION</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">Describes the resolution of device timer. This is measured in nanoseconds.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_QUEUE_PROPERTIES</code>
                      </td>
                      <td align="left">
                      <p>cl_command_-</p>
                      <p>queue_properties</p>
                    </td>
                      <td align="left">
                      <p>
                        Describes the command-queue properties supported by the device.  This is
                        a bit-field that describes one or more of the following values:
                      </p>

                      <p><code class="constant">CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE</code></p>
                      <p><code class="constant">CL_QUEUE_PROFILING_ENABLE</code></p>
                      <p>
                        These properties are described in the table for
                        <a class="citerefentry" href="clCreateCommandQueue.html"><span class="citerefentry"><span class="refentrytitle">clCreateCommandQueue</span></span></a>.
                        The mandated minimum capability is
                        <code class="constant">CL_QUEUE_PROFILING_ENABLE</code>.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_REFERENCE_COUNT</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      Returns the device reference count. If the device is a root-level device,
                      a reference count of one is returned.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_SINGLE_FP_CONFIG</code>
                      </td>
                      <td align="left">
                        <p>cl_device_-</p>
                        <p>fp_config</p>
                      </td>
                      <td align="left">
                      <p>
                        Describes single precision floating-point capability of the device. This
                        is a bit-field that describes one or more of the following values:
                      </p>

                      <p><code class="constant">CL_FP_DENORM</code> - denorms are supported</p>
                      <p><code class="constant">CL_FP_INF_NAN</code> - INF and quiet NaNs are supported</p>
                      <p><code class="constant">CL_FP_ROUND_TO_NEAREST</code> - round to nearest even rounding mode supported</p>
                      <p><code class="constant">CL_FP_ROUND_TO_ZERO</code> - round to zero rounding mode supported</p>
                      <p><code class="constant">CL_FP_ROUND_TO_INF</code> - round to +ve and -ve infinity rounding modes supported</p>
                      <p><code class="constant">CL_FP_FMA</code> - IEEE754-2008 fused multiply-add is supported</p>

                      <p>
                        <code class="constant">CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT</code> - divide and
                        sqrt are correctly rounded as defined by the IEEE754 specification.
                      </p>

                      <p>
                        <code class="constant">CL_FP_SOFT_FLOAT</code> - Basic floating-point operations
                        (such as addition, subtraction, multiplication) are implemented in
                        software.
                      </p>

                      <p>
                        The mandated minimum floating-point capability for devices that
                        are not of type <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>
                        is <code class="constant">CL_FP_ROUND_TO_NEAREST</code> |
                        <code class="constant">CL_FP_INF_NAN</code>.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE</code>
                      </td>
                      <td align="left">cl_device_type</td>
                      <td align="left">
                      The OpenCL device type. Currently supported values are one of or
                      a combination of: <code class="constant">CL_DEVICE_TYPE_CPU</code>,
                      <code class="constant">CL_DEVICE_TYPE_GPU</code>,
                      <code class="constant">CL_DEVICE_TYPE_ACCELERATOR</code>,
                      <code class="constant">CL_DEVICE_TYPE_DEFAULT</code>, a combination of the above
                      types, or <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_VENDOR</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">Vendor name string.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_VENDOR_ID</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                      A unique device vendor identifier. An example of a unique device identifier
                      could be the PCIe ID.
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_VERSION</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      <p>
                        OpenCL version string. Returns the OpenCL version supported by the
                        device. This version string has the following format:
                      </p>

                      <p>
                        <code class="varname">
                        OpenCL&lt;space&gt;&lt;major_version.minor_version&gt;&lt;space&gt;&lt;vendor-specific
                        information&gt; </code>
                      </p>

                      <p>
                        The <code class="varname">major_version.minor_version</code> value returned will
                        be 1.2.
                      </p>
                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DRIVER_VERSION</code>
                      </td>
                      <td align="left">char[]</td>
                      <td align="left">
                      OpenCL software driver version string in the form
                      <code class="varname">major_number.minor_number</code>.
                    </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          <code class="constant">CL_DEVICE_PROFILE</code>: The platform profile returns the profile
          that is implemented by the OpenCL framework. If the platform profile returned is
          FULL_PROFILE, the OpenCL framework will support devices that are FULL_PROFILE and may
          also support devices that are <code class="constant">EMBEDDED_PROFILE</code>. The compiler must
          be available for all devices i.e. <code class="constant">CL_DEVICE_COMPILER_AVAILABLE</code>
          is <code class="constant">CL_TRUE</code>. If the platform profile returned
          is <code class="constant">EMBEDDED_PROFILE</code>, then devices that are only
          <code class="constant">EMBEDDED_PROFILE</code> are supported.
        </p>
        <p>
          The device queries described the table above should return the
          same information for a root-level device i.e. a device returned by
          <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a> and any
          sub-devices created from this device except for the following queries:

            </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
              <code class="constant">CL_DEVICE_GLOBAL_MEM_CACHE_SIZE</code>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <code class="constant">CL_DEVICE_BUILT_IN_KERNELS</code>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <code class="constant">CL_DEVICE_PARENT_DEVICE</code>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <code class="constant">CL_DEVICE_PARTITION_TYPE</code>
            </li>
            <li class="listitem" style="list-style-type: disc">
              <code class="constant">CL_DEVICE_REFERENCE_COUNT</code>
            </li>
          </ul>
        </div>
        <p>
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
      <code class="function">clGetDeviceInfo</code> returns <span class="errorname">CL_SUCCESS</span> if the
      function is executed successfully. Otherwise, it returns the following:
    </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_DEVICE</span> if <code class="varname">device</code> is not valid.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">param_name</code>
          is not one of the supported values or if size in bytes specified by
          <code class="varname">param_value_size</code> is less than size of return type as shown in the
          table above and <code class="varname">param_value</code> is not a <span class="errorname">NULL</span>
          value or if param_name is a value that is available as an extension and the corresponding
          extension is not supported by the device.
        </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="http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf#page=37" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>,
            <a class="citerefentry" href="cl_khr_fp64.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_fp64</span></span></a>,
            <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">__constant</span></span></a>,
            <a class="citerefentry" href="clCreateCommandQueue.html"><span class="citerefentry"><span class="refentrytitle">clCreateCommandQueue</span></span></a>,
            <a class="citerefentry" href="clRetainCommandQueue.html"><span class="citerefentry"><span class="refentrytitle">clRetainCommandQueue</span></span></a>,
            <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</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-2011 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>
