<?php
$static_title = 'Khronos OpenCL Registry';

include_once("../../assets/static_pages/khr_page_top.php");
?>

<p> The OpenCL registry contains formatted specifications of the OpenCL
    API, OpenCL C programming language, OpenCL SPIR-V environment, and
    OpenCL extensions. </p>

<p> The OpenCL registry also includes header files, links to reference pages,
    reference cards, and other related documentation. </p>

<p> The asciidoctor source for the specifications in this registry is
    available in the <a href="https://github.com/KhronosGroup/OpenCL-Docs">
    OpenCL-Docs </a> GitHub repository. </p>

<p> This registry is hosted in the <a
    href="https://github.com/KhronosGroup/OpenCL-Registry/"> OpenCL-Registry
    </a> GitHub repository. </p>


<h6> OpenCL 3.0 Unified Specifications </h6>

<p> The latest version of OpenCL is OpenCL 3.0. </p>

<p> The OpenCL specifications are now unified so they describe OpenCL 3.0
    and all previous versions of OpenCL. </p>

<ul>
<li> OpenCL API Specification
     (<a href="specs/3.0-unified/html/OpenCL_API.html">HTML</a>)
     (<a href="specs/3.0-unified/pdf/OpenCL_API.pdf">PDF</a>)
     (April 23, 2021). </li>
<li> OpenCL C Language Specification
     (<a href="specs/3.0-unified/html/OpenCL_C.html">HTML</a>)
     (<a href="specs/3.0-unified/pdf/OpenCL_C.pdf">PDF</a>)
     (April 23, 2021). </li>
<li> OpenCL Extension Specification
     (<a href="specs/3.0-unified/html/OpenCL_Ext.html">HTML</a>)
     (<a href="specs/3.0-unified/pdf/OpenCL_Ext.pdf">PDF</a>)
     (April 23, 2021). </li>
<li> OpenCL SPIR-V Environment Specification
     (<a href="specs/3.0-unified/html/OpenCL_Env.html">HTML</a>)
     (<a href="specs/3.0-unified/pdf/OpenCL_Env.pdf">PDF</a>)
     (April 23, 2021). </li>
<li> <a href="https://www.khronos.org/files/opencl30-reference-guide.pdf">
     OpenCL 3.0 Reference Guide.</a> </li>
</ul>


<h6> Related Specifications and Resources </h6>

<ul>
<li> C language header files for the OpenCL API are in the <a
     href="https://github.com/KhronosGroup/OpenCL-Headers">
     OpenCL-Headers</a> GitHub repository. </li>
<li> Header files providing C++ bindings for the OpenCL API are in the <a
     href="https://www.github.com/KhronosGroup/OpenCL-CLHPP">
     OpenCL-CLHPP </a> GitHub repository.
     <ul>
     <li> <a href="https://khronosgroup.github.io/OpenCL-CLHPP/">
          Doxygen documentation</a> for the C++ bindings is also available. </li>
     </ul> </li>
<li> An OpenCL Installable Client Driver (ICD) Loader can be obtained
     from the <a href="https://github.com/KhronosGroup/OpenCL-ICD-Loader">
     OpenCL-ICD-Loader </a> GitHub repository.
     <ul>
     <li> OpenCL ICD Installation Guide Specification
          (<a href="specs/2.2/html/OpenCL_ICD_Installation.html">HTML</a>)
          (<a href="specs/2.2/pdf/OpenCL_ICD_Installation.pdf">PDF</a>) </li>
     </ul> </li>
<li> The Standard Portable Intermediate Representation (SPIR-V)
     specification is in the <a href="../spir-v/">SPIR-V
     Registry</a>.
     <ul>
     <li> The <a href="https://www.khronos.org/registry/spir-v/"> OpenCL Extended
          Instruction Set for SPIR-V</a> is included as part of the SPIR-V
          registry. </li>
     </ul> </li>
<li> The SYCL specification is found in the <a href="../sycl/">SYCL
     Registry</a>. </li>
</ul>


<h6> Older Specifications </h6>

<p> Older versions of OpenCL are provided for reference. </p>

<p> OpenCL 2.2. </p>

<ul>
<li> OpenCL 2.2 API Specification
     (<a href="specs/2.2/html/OpenCL_API.html">HTML</a>)
     (<a href="specs/2.2/pdf/OpenCL_API.pdf">PDF</a>)
     (July 19, 2019). </li>
<li> OpenCL Extension Specification
     (<a href="specs/2.2/html/OpenCL_Ext.html">HTML</a>)
     (<a href="specs/2.2/pdf/OpenCL_Ext.pdf">PDF</a>)
     (July 19, 2019). </li>
<li> OpenCL SPIR-V Environment Specification
     (<a href="specs/2.2/html/OpenCL_Env.html">HTML</a>)
     (<a href="specs/2.2/pdf/OpenCL_Env.pdf">PDF</a>)
     (July 19, 2019). </li>
<li> OpenCL C Language Specification
     (<a href="specs/2.2/html/OpenCL_C.html">HTML</a>)
     (<a href="specs/2.2/pdf/OpenCL_C.pdf">PDF</a>)
     (July 19, 2019). </li>
<li> OpenCL C++ Language Specification
     (<a href="specs/2.2/html/OpenCL_Cxx.html">HTML</a>)
     (<a href="specs/2.2/pdf/OpenCL_Cxx.pdf">PDF</a>)
     (July 19, 2019). </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.2/docs/man/html/">
     OpenCL 2.2 Reference Pages.</a> </li>
<li> <a href="https://www.khronos.org/files/opencl22-reference-guide.pdf">
     OpenCL 2.2 Reference Guide.</a> </li>
</ul>


<p> OpenCL 2.1 </p>

<ul>
<li> OpenCL 2.1 API
     <a href="specs/opencl-2.1.pdf">
     Specification </a> (November 11, 2015). </li>
<li> OpenCL 2.1 Extensions
     <a href="specs/opencl-2.1-extensions.pdf">
     Specification </a> (November 5, 2015). </li>
<li> OpenCL 2.1 Environment
     <a href="specs/opencl-2.1-environment.pdf">
     Specification</a>. </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.1/docs/man/xhtml/">
     OpenCL 2.1 Reference Pages.</a>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.1/docs/OpenCL-2.1-refcard.pdf">
     OpenCL 2.1 Quick Reference Card.</a> </li>
</ul>


<h6> OpenCL 2.0 </h6>

<ul>
<li> OpenCL 2.0 API
     <a href="specs/opencl-2.0.pdf">
     Specification </a> (July 21, 2015). </li>
<li> OpenCL 2.0 C Language
     <a href="specs/opencl-2.0-openclc.pdf">
     Specification </a> (April 13, 2016). </li>
<li> OpenCL 2.0 Extension
     <a href="specs/opencl-2.0-extensions.pdf">
     Specification </a> (March 11, 2016). </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.0/docs/man/xhtml/">
     OpenCL 2.0 Reference Pages.</a>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/2.0/docs/OpenCL-2.0-refcard.pdf">
     OpenCL 2.0 Quick Reference Card.</a> </li>
</ul>


<h6> OpenCL 1.2 </h6>

<ul>
<li> OpenCL 1.2 API and C Language
     <a href="specs/opencl-1.2.pdf">
     Specification </a> (November 14, 2012). </li>
<li> OpenCL 1.2 Extensions
     <a href="specs/opencl-1.2-extensions.pdf">
     Specification </a> (September 22, 2015). </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.2/docs/man/xhtml/">
     OpenCL 1.2 Reference Pages.</a> </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.2/docs/OpenCL-1.2-refcard.pdf">
     OpenCL 1.2 Quick Reference Card.</a> </li>
</ul>


<h6> OpenCL 1.1 </h6>

<ul>
<li> OpenCL 1.1 API and C Language
     <a href="specs/opencl-1.1.pdf">
     Specification </a> (revision 44, June 1, 2011).
     A
     <a href="http://www.cutt.co.jp/book/978-4-87783-256-8.html">
     Japanese translation </a>
     of the specification is also available. </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.1/docs/man/xhtml/">
     OpenCL 1.1 Reference Pages.</a> </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.1/docs/OpenCL-1.1-refcard.pdf">
     OpenCL 1.1 Reference Card.</a> </li>
</ul>


<h6> OpenCL 1.0 </h6>

<ul>
<li> OpenCL 1.0 API and C Language
     <a href="specs/opencl-1.0.pdf">
     Specification </a> (revision 48, October 6, 2009). </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.0/docs/man/xhtml/">
     OpenCL 1.0 Reference Pages.</a> </li>
<li> <a href="http://www.khronos.org/registry/OpenCL//sdk/1.0/docs/OpenCL-1.0-refcard.pdf">
     OpenCL 1.0 Reference Card.</a> </li>
</ul>


<h6> Providing Feedback on the Registry </h6>

<p> Khronos welcomes comments and bug reports. To provide feedback on the
    OpenCL reference pages, or on the OpenCL registry itself (such as
    reporting missing content, bad links, etc.), file an issue in the <a
    href="https://github.com/KhronosGroup/OpenCL-Registry/issues">
    OpenCL-Registry </a> GitHub repository. </p>

<p> Feedback on related OpenCL components can be provided as follows: </p>

<ul>
<li> For the OpenCL API, C/C++ Language, and SPIR-V Environment
     Specifications, file an issue on the
     <a href="https://github.com/KhronosGroup/OpenCL-Docs/issues">
     OpenCL-Docs </a> GitHub repository. </li>
<li> For the OpenCL C header files, file an issue in the <a
     href="https://github.com/KhronosGroup/OpenCL-Headers/issues">
     OpenCL-Headers </a> GitHub repository. </li>
<li> For the OpenCL C++ bindings, file an issue in the <a
     href="https://github.com/KhronosGroup/OpenCL-CLHPP/issues">
     OpenCL-CLHPP </a> GitHub repository. </li>
<li> For the OpenCL ICD Loader, file an issue in the <a
     href="https://github.com/KhronosGroup/OpenCL-ICD-Loader/issues">
     OpenCL-ICD-Loader </a> GitHub repository. </li>
</ul>


<h6> Extension Template </h6>

<p> The <a href="extensions/template.txt"> extension template </a> for
    writing an OpenCL extension specification shows the structure of
    vendor extension specifications in the registry (listed below) and
    serves as a guide for writing new extension specifications. The
    template describes the purpose of each section in an extension
    specification. </p>


<h6> Enumerant and Extension Number Registry </h6>

<p> <a href="https://github.com/KhronosGroup/OpenCL-Docs/blob/master/xml/cl.xml">
    cl.xml </a> is the registry of reserved OpenCL API enumerant ranges.
    (Note that following this link will probably not render sensibly in
    browsers, since the file is not entirely valid XML, simply a manually
    updated placeholder.)</p>


<h6> <a name="otherextspecs"></a>
     Extension Specifications</h6>

<?php include("extensions/clext.php"); ?>

<?php include_once("../../assets/static_pages/khr_page_bottom.php"); ?>
</body>
</html>
