<?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">int</span>, <span class="type">unsigned int</span>,
                            <span class="type">uint</span>, <span class="type">long</span>, <span class="type">unsigned long</span>,
                            <span class="type">ulong</span>, <span class="type">float</span>, <span class="type">half</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">image31_buffer_t</span>, <span class="type">image1d_array_t</span>,
                            <span class="type">sampler_t</span>, and <span class="type">event_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 4 *
          sizeof(component). This means that a 3-component vector data type
          will be aligned to a 4 * sizeof(component) 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>
        <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>
          * sizeof(<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. sizeof(<code class="varname">image_channel_data_type</code>)).
        </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="http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf#page=195" 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-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>
