Khronos OpenCL Registry

Khronos OpenCL Registry

The OpenCL registry contains specifications of the core API and the OpenCL C language; a portable intermediate representation of OpenCL programs; specifications of Khronos- and vendor-approved OpenCL extensions; header files corresponding to the specifications; and other related documentation.

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

The SYCL specification is found in the SYCL Registry.

OpenCL Core API and C Language Specification, Headers, and Documentation

The current version of OpenCL is OpenCL 2.1 Provisional. The 2.1 specifications are released for public feedback, but are not yet finalized by Khronos. OpenCL 2.0, linked below, is the latest finalized version.

Older Specifications

Older versions of OpenCL provided for reference.

  • OpenCL 1.2 API and C Language Specification (revision 19, November 14, 2012).
  • OpenCL 1.2 Extensions Specification (revision 19, January 16, 2014).
  • OpenCL 1.2 C++ Bindings Specification (version 1.2.6 revision 2, October, 2013).
  • OpenCL 1.2 Installable Client Driver (ICD) Loader. The related cl_khr_icd extension allows multiple implementations of OpenCL to co-exist on the same system. The ICD Loader allows applications to choose a platform from the list of installed platforms and dispatches OpenCL API calls to the underlying implementation. Consult LICENSE.txt in the tarball for full terms and conditions.
  • OpenCL 1.2 Online Manual Pages. The Docbook XML source for the manual pages can be obtained from the Khronos Subversion repository via anonymous read-only access.
  • OpenCL 1.2 Reference Card (revision 1111, released November 15, 2011).
  • OpenCL 1.2 headers are structured in exactly the same fashion as OpenCL 2.0 headers described above.
Providing Feedback on the Registry

Khronos welcomes comments and bug reports. To provide feedback, please create an account on the Khronos Bugzilla and file a bug. Make sure to fill in the "Product" field in the bug entry form as "OpenCL" and pick appropriate values for the other fields.

If you are already logged into Bugzilla, the following links will prepopulate the bug report fields as appropriate for:

  • feedback on the OpenCL Header Files and (NOTE: you must be logged into Bugzilla before clicking on this link)
  • feedback on the OpenCL C++ Bindings (NOTE: you must be logged into Bugzilla before clicking on this link)

You can also post feedback to the OpenCL Message Board in a new thread, or there is an existing thread specifically created to discuss the OpenCL C++ Bindings .

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.

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