Khronos OpenCL Registry

The OpenCL registry contains specifications for the core API; Khronos- and vendor-approved extensions to the core API; the OpenCL C and C++ languages; and the OpenCL SPIR-V Environment.

In addition, it contains reference pages for different OpenCL versions, and links to the github repository containing unified header files corresponding to the Specifications.

The OpenCL Standard Portable Intermediate Representation (SPIR) specification is found in the SPIR Registry.

The SYCL specification is found in the SYCL Registry.

The registry, including published specifications and Docbook XML source for the reference pages, is hosted in the OpenCL-Registry Github repository.

OpenCL Specifications and Related Documentation

The current version of OpenCL is OpenCL 2.2.

The asciidoctor source for the OpenCL 2.2 Specifications is available in the KhronosGroup/OpenCL-Docs Github repository.

  • OpenCL 2.2 API Specification (HTML) (PDF) (October 8, 2018).
  • OpenCL 2.2 Extension Specification (HTML) (PDF) (October 8, 2018).
  • OpenCL SPIR-V Environment Specification (HTML) (PDF) (October 8, 2018).
  • OpenCL C Language Specification (HTML) (PDF) (October 8, 2018).
  • OpenCL C++ Language Specification (HTML) (PDF) (October 8, 2018).
  • OpenCL ICD Installation Guide Specification (HTML) (PDF) (October 8, 2018).
  • The OpenCL Extended Instruction Set for SPIR-V is included as part of the SPIR-V registry.
  • The OpenCL 2.2 Reference Pages are not posted yet.
  • OpenCL 2.2 Reference Guide.
OpenCL Header Files

C language header files for the OpenCL API are found in the KhronosGroup/OpenCL-Headers Github repository. In the past, there were different header files for each OpenCL version. The header files have now been unified - a single set of headers supports all OpenCL API versions - and the API version defined by the headers at compilation time is determined as described in the README.md in that repository.

OpenCL ICD and C++ Bindings Headers
  • The OpenCL 2.x C++ Bindings Header File, cl2.hpp can be obtained from the OpenCL-CLHPP Github repository, and Doxygen documentation for the bindings is also available.

  • The OpenCL 1.x C++ Bindings Header File can also be generated from the OpenCL-CLHPP repository, but is not currently packaged as part of the releases built for that repo. A copy of cl.hpp may be downloaded from the registry as well.

  • The original OpenCL 1.2 C++ Binding and OpenCL 1.1 C++ Binding Specifications for the headers are also available.

  • The OpenCL Installable Client Driver (ICD) Loader can be obtained from the OpenCL-ICD-Loader Github repository.

Older Specifications

Older versions of OpenCL provided for reference.

OpenCL 2.1

OpenCL 2.0
OpenCL 1.2
OpenCL 1.1
OpenCL 1.0
Providing Feedback on the Registry

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 OpenCL-Registry Github project.

Feedback on related OpenCL components can be provided as follows:

  • For the OpenCL API, C/C++ Language, and Environment Specifications, file an issue on the KhronosGroup/OpenCL-Docs Github repository.

  • For the OpenCL C header files, file an issue in the OpenCL-Headers Github project.

  • For the OpenCL C++ Bindings, file an issue in the OpenCL-CLHPP Github project.

  • For the OpenCL ICD Loader, file an issue in the OpenCL-ICD-Loader Github repository.

Extension Template

The extension template 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.

Enumerant and Extension Number Registry

cl.xml 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.)

Extension Specifications
  1. cl_khr_gl_sharing
  2. cl_nv_d3d9_sharing
  3. cl_nv_d3d10_sharing
  4. cl_nv_d3d11_sharing
  5. cl_khr_icd
  6. cl_khr_d3d10_sharing
  7. cl_amd_device_attribute_query
  8. cl_amd_fp64
  9. cl_amd_media_ops
  10. cl_ext_migrate_memobject
  11. cl_ext_device_fission
  12. cl_ext_atomic_counters_32
  13. cl_ext_atomic_counters_64
  14. cl_intel_dx9_media_sharing
  15. cl_amd_media_ops2
  16. cl_intel_thread_local_exec
  17. cl_nv_compiler_options
  18. cl_nv_device_attribute_query
  19. cl_nv_pragma_unroll
  20. cl_intel_device_partition_by_names
  21. cl_qcom_ext_host_ptr
  22. cl_qcom_ion_host_ptr
  23. cl_intel_motion_estimation
  24. cl_intel_accelerator
  25. cl_amd_bus_addressable_memory
  26. cl_arm_core_id
  27. cl_arm_printf
  28. cl_altera_live_object_tracking
  29. cl_altera_device_temperature
  30. cl_altera_compiler_mode
  31. cl_intel_d3d11_nv12_media_sharing
  32. cl_qcom_android_native_buffer_host_ptr
  33. cl_intel_advanced_motion_estimation
  34. cl_intel_simultaneous_sharing
  35. cl_intel_subgroups
  36. cl_intel_va_api_media_sharing
  37. cl_intel_egl_image_yuv
  38. cl_arm_import_memory
  39. cl_arm_non_uniform_work_group_size
  40. cl_arm_shared_virtual_memory
  41. cl_arm_thread_limit_hint
  42. cl_intel_packed_yuv
  43. cl_intel_required_subgroup_size
  44. cl_img_cached_allocations
  45. cl_img_use_gralloc_ptr
  46. cl_img_yuv_image
  47. cl_intel_driver_diagnostics
  48. cl_intel_subgroups_short
  49. cl_intel_planar_yuv
  50. cl_intel_device_side_avc_motion_estimation
  51. cl_intel_media_block_io
  52. cl_arm_integer_dot_product
  53. cl_qcom_ext_host_ptr_iocoherent
  54. cl_amd_planar_yuv