<?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>Data Types</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="Data Types" />
  </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="DataTypes"></a>
        <h1>Data Types</h1>
        <p>
            OpenCL data types.
        </p>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          These are the data types available in the OpenCL C programming language. Click on a
          category name in the table below to see information about specific data types.
        </p>
        <div class="informaltable">
          <table border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">Data type category</th>
                <th align="left">Included data types</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                            <a class="citerefentry" href="scalarDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Scalar data types</span></span></a>
                        </td>
                <td align="left">
                            <span class="type">bool</span>, 
                            <span class="type">char</span>, <span class="type">cl_char</span>,
                            <span class="type">unsigned char</span>, <span class="type">uchar</span>, <span class="type">cl_uchar</span>,
                            <span class="type">short</span>, <span class="type">cl_short</span>, 
                            <span class="type">unsigned short</span>, <span class="type">ushort</span>, <span class="type">cl_ushort</span>, 
                            <span class="type">int</span>, <span class="type">cl_int</span>, 
                            <span class="type">unsigned int</span>, <span class="type">uint</span>, <span class="type">cl_uint</span>, 
                            <span class="type">long</span>, <span class="type">cl_long</span>, 
                            <span class="type">unsigned long</span>, <span class="type">ulong</span>, <span class="type">cl_ulong</span>, 
                            <span class="type">float</span>, <span class="type">size_t</span>,
                            <span class="type">ptrdiff_t</span>, <span class="type">intptr_t</span>, <span class="type">uintptr_t</span>,
                            <span class="type">void</span>, <span class="type">double</span>, and <span class="type">half</span> floating point types.
                        </td>
              </tr>
              <tr>
                <td align="left">
                            <a class="citerefentry" href="vectorDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Vector data types</span></span></a>
                        </td>
                <td align="left">
                            <span class="type">char<em class="replaceable"><code>n</code></em></span>, <span class="type">uchar<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">short<em class="replaceable"><code>n</code></em></span>, <span class="type">ushort<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">int<em class="replaceable"><code>n</code></em></span>, <span class="type">uint<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">long<em class="replaceable"><code>n</code></em></span>, <span class="type">ulong<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">float<em class="replaceable"><code>n</code></em></span>, double<em class="replaceable"><code>n</code></em>, 
                            and optional half<em class="replaceable"><code>n</code></em> types.
                        </td>
              </tr>
              <tr>
                <td align="left">
                            <a class="citerefentry" href="abstractDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Abstract data types</span></span></a>
                        </td>
                <td align="left">
                            <span class="type">cl_platform_id</span>, <span class="type">cl_device_id</span>,
                            <span class="type">cl_context</span>, <span class="type">cl_command_queue</span>,
                            <span class="type">cl_mem</span>, <span class="type">cl_program</span>,
                            <span class="type">cl_kernel</span>, <span class="type">cl_event</span>, and
                            <span class="type">cl_sampler</span>.
                        </td>
              </tr>
              <tr>
                <td align="left">
                            <a class="citerefentry" href="reservedDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Reserved Data Types</span></span></a>
                        </td>
                <td align="left">
                            <span class="type">bool<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">half<em class="replaceable"><code>n</code></em></span>, <span class="type">quad</span>,
                            <span class="type">quad<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">complex half</span>, <span class="type">complex half<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">imaginary half</span>, <span class="type">imaginary half<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">complex float</span>, <span class="type">complex float<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">imaginary float</span>, <span class="type">imaginary float<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">complex double</span>, <span class="type">complex double<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">imaginary double</span>, <span class="type">imaginary double<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">complex quad</span>, <span class="type">complex quad<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">imaginary quad</span>, <span class="type">imaginary quad<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">float<em class="replaceable"><code>n</code></em></span>x<span class="emphasis"><em>m</em></span>,
                            <span class="type">double<em class="replaceable"><code>n</code></em></span>x<span class="emphasis"><em>m</em></span>,
                            <span class="type">long double</span>, <span class="type">long double<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">long long</span>, <span class="type">long long<em class="replaceable"><code>n</code></em></span>,
                            <span class="type">unsigned long long</span>, <span class="type">ulong long</span>, and
                            <span class="type">ulong long<em class="replaceable"><code>n</code></em></span>.
                        </td>
              </tr>
              <tr>
                <td align="left">
                            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Other data types</span></span></a>
                        </td>
                <td align="left">
                            <span class="type">image2d_t</span>, <span class="type">image3d_t</span>, <span class="type">image2d_array_t</span>, 
                            <span class="type">image1d_t</span>, <span class="type">image1d_buffer_t</span>, <span class="type">image1d_array_t</span>, 
                            <span class="type">image2d_depth_t</span>, <span class="type">image2d_array_depth_t</span>, 
                            <span class="type">sampler_t</span>, <span class="type">queue_t</span>, <span class="type">ndrange_t</span>, 
                            <span class="type">clk_event_t</span>, <span class="type">reserve_id_t</span>, <span class="type">event_t</span>, 
                            <span class="type">cl_mem_fence_flags</span>, 
                            <span class="type">image2d_array_msaa_t_t</span>, <span class="type">image2d_msaa_depth_t_t</span>, and
                            <span class="type">image2d_array_msaa_depth_t_t</span>.
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Alignment of Types</h2>
        <p>
          A data item declared to be a data type in memory is always aligned to the size of the
          data type in bytes. For example, a <span class="type">float4</span> variable will be aligned to a
          16-byte boundary, and a <span class="type">char2</span> variable will be aligned to a 2-byte boundary.
        </p>
        <p>
          For 3-component vector data types, the size of the data type is <code class="code">4 *
          sizeof(component)</code>. This means that a 3-component vector data type
          will be aligned to a <code class="code">4 * sizeof(component)</code> boundary. The 
          <a class="citerefentry" href="vloadn.html"><span class="citerefentry"><span class="refentrytitle">vload3</span></span></a> and 
          <a class="citerefentry" href="vstoren.html"><span class="citerefentry"><span class="refentrytitle">vstore3</span></span></a> 
          built-in functions can be used to read and write, respectively, 3-component vector 
          data types from an array of packed scalar data type.
        </p>
        <p>
          A built-in data type that is not a power of two bytes in size must be aligned to the next
          larger power of two. This rule applies to built-in types only, not <code class="code">structs</code>
          or <code class="code">unions</code>.
        </p>
        <p>
          The OpenCL compiler is responsible for aligning data items to the appropriate
          alignment as required by the data type. For arguments to a <a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">__kernel</span></span></a>
          function declared to be a pointer to a data type, the OpenCL compiler can
          assume that the pointee is always appropriately aligned as required by the
          data type. The behavior of an unaligned load or store is undefined, except
          for the <a class="citerefentry" href="vloadn.html"><span class="citerefentry"><span class="refentrytitle">vloadn</span></span></a>,
          <a class="citerefentry" href="vload_halfn.html"><span class="citerefentry"><span class="refentrytitle">vload_halfn</span></span></a>,
          <a class="citerefentry" href="vstoren.html"><span class="citerefentry"><span class="refentrytitle">vstoren</span></span></a>, and
          <a class="citerefentry" href="vstore_halfn.html"><span class="citerefentry"><span class="refentrytitle">vstore_halfn</span></span></a> functions. The
          vector load functions can read a vector from an address aligned to the element type
          of the vector. The vector store functions can write a vector to an address aligned
          to the element type of the vector.
        </p>
        <h4><a id="id-1.5.6"></a>Alignment of Application Data Types</h4>
        <p>
          The user is responsible for ensuring that data passed into and out of OpenCL buffers are
          natively aligned relative to the start of the buffer as described above. This implies
          that OpenCL buffers created with <code class="constant">CL_MEM_USE_HOST_PTR</code> need to provide
          an appropriately aligned host memory pointer that is aligned to the data types used to
          access these buffers in a kernel(s). As well, the user is responsible to ensure that
          data passed into and out of OpenCL images are properly aligned to the granularity of
          the data representing a single pixel (e.g.  <code class="varname">image_num_channels</code>
          * <code class="code">sizeof</code>(<code class="varname">image_channel_data_type</code>)) except for
          <code class="constant">CL_RGB</code> and <code class="constant">CL_RGBx</code> images where
          the data must be aligned to the granularity of a single channel in a pixel
          (i.e. <code class="code">sizeof</code>(<code class="varname">image_channel_data_type</code>)).
            This implies that OpenCL images created with
            <code class="constant">CL_MEM_USE_HOST_PTR</code> must align 
            correctly. The image alignment value can be queried
            using the <code class="constant">CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT</code> 
            query. In addition, source pointers for 
            <a class="citerefentry" href="clEnqueueWriteBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteBuffer</span></span></a>, 
            <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a> 
            and other operations that copy to
            the OpenCL runtime, as well as destination pointers for 
            <a class="citerefentry" href="clEnqueueReadBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadBuffer</span></span></a>,
            <a class="citerefentry" href="clEnqueueReadImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadImage</span></span></a> 
            and other operations that copy from the OpenCL runtime must follow the
            same alignment rules.
        </p>
        <p>
          OpenCL makes no requirement about the alignment of OpenCL application defined data
          types outside of buffers and images, except that the underlying vector primitives (e.g.
          <span class="type">__cl_float4</span>) where defined shall be directly accessible as such
          using appropriate named fields in the <code class="constant">cl_type</code> union. Nevertheless,
          it is recommended that the <code class="code">cl_platform.h</code> header should attempt to
          naturally align OpenCL defined application data types (e.g. <span class="type">cl_float4</span>)
          according to their type.
        </p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1-openclc.pdf#page=6" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
