Khronos OpenCL Registry - The Khronos Group Inc (original) (raw)
The OpenCL registry contains formatted specifications of the OpenCL API, OpenCL C programming language, OpenCL SPIR-V environment, and OpenCL extensions.
The OpenCL registry also includes header files, links to reference pages, reference cards, and other related documentation.
The asciidoctor source for the specifications in this registry is available in the OpenCL-Docs GitHub repository.
This registry is hosted in the OpenCL-Registry GitHub repository.
OpenCL 3.0 Unified Specifications
The latest version of OpenCL is OpenCL 3.0.
The OpenCL specifications are now unified so they describe OpenCL 3.0 and all previous versions of OpenCL, and include khr extensions integrated into the core API and C specification language.
- OpenCL API Specification (HTML) (PDF) (July 10, 2025).
- OpenCL C Language Specification (HTML) (PDF) (July 10, 2025).
- OpenCL Extension Specification (HTML) (PDF) (July 10, 2025).
- OpenCL SPIR-V Environment Specification (HTML) (PDF) (July 10, 2025).
- OpenCL 3.0 Reference Pages.
- OpenCL 3.0 Reference Guide.
Related Specifications and Resources
- C language header files for the OpenCL API are in the OpenCL-Headers GitHub repository.
- Header files providing C++ bindings for the OpenCL API are in the OpenCL-CLHPP GitHub repository.
- Doxygen documentation for the C++ bindings is also available.
- An OpenCL Installable Client Driver (ICD) Loader can be obtained from the OpenCL-ICD-Loader GitHub repository.
- The Standard Portable Intermediate Representation (SPIR-V) specification is in the SPIR-V Registry.
- The OpenCL Extended Instruction Set for SPIR-V is included as part of the SPIR-V registry.
- The SYCL specification is found in the SYCL Registry.
Older Specifications
Older versions of OpenCL are provided for reference.
OpenCL 2.2.
- OpenCL 2.2 API Specification (HTML) (PDF) (July 19, 2019).
- OpenCL Extension Specification (HTML) (PDF) (July 19, 2019).
- OpenCL SPIR-V Environment Specification (HTML) (PDF) (July 19, 2019).
- OpenCL C Language Specification (HTML) (PDF) (July 19, 2019).
- OpenCL C++ Language Specification (HTML) (PDF) (July 19, 2019).
- OpenCL 2.2 Reference Pages.
- OpenCL 2.2 Reference Guide.
OpenCL 2.1
- OpenCL 2.1 API Specification (November 11, 2015).
- OpenCL 2.1 Extensions Specification (November 5, 2015).
- OpenCL 2.1 Environment Specification.
- OpenCL 2.1 Reference Pages.
- OpenCL 2.1 Quick Reference Card.
OpenCL 2.0
- OpenCL 2.0 API Specification (July 21, 2015).
- OpenCL 2.0 C Language Specification (April 13, 2016).
- OpenCL 2.0 Extension Specification (March 11, 2016).
- OpenCL 2.0 Reference Pages.
- OpenCL 2.0 Quick Reference Card.
OpenCL 1.2
- OpenCL 1.2 API and C Language Specification (November 14, 2012).
- OpenCL 1.2 Extensions Specification (September 22, 2015).
- OpenCL 1.2 Reference Pages.
- OpenCL 1.2 Quick Reference Card.
OpenCL 1.1
- OpenCL 1.1 API and C Language Specification (revision 44, June 1, 2011). A Japanese translation of the specification is also available.
- OpenCL 1.1 Reference Pages.
- OpenCL 1.1 Reference Card.
OpenCL 1.0
- OpenCL 1.0 API and C Language Specification (revision 48, October 6, 2009).
- OpenCL 1.0 Reference Pages.
- OpenCL 1.0 Reference Card.
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 repository.
Feedback on related OpenCL components can be provided as follows:
- For the OpenCL API, C/C++ Language, and SPIR-V Environment Specifications, file an issue on the OpenCL-Docs GitHub repository.
- For the OpenCL C header files, file an issue in the OpenCL-Headers GitHub repository.
- For the OpenCL C++ bindings, file an issue in the OpenCL-CLHPP GitHub repository.
- 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.)
Khronos Extension Specifications
Khronos khr extensions are now integrated into the core API and C language Specifications. These links are to the appropriate extension appendix of the OpenCL API Specification.
khr extensions have been removed from the OpenCL Extensions specification, and that document will eventually be retired once its remaining content is integrated elsewhere.
- cl_khr_3d_image_writes
- cl_khr_async_work_group_copy_fence
- cl_khr_byte_addressable_store
- cl_khr_command_buffer
- cl_khr_command_buffer_multi_device
- cl_khr_command_buffer_mutable_dispatch
- cl_khr_create_command_queue
- cl_khr_d3d10_sharing
- cl_khr_d3d11_sharing
- cl_khr_depth_images
- cl_khr_device_enqueue_local_arg_types
- cl_khr_device_uuid
- cl_khr_dx9_media_sharing
- cl_khr_egl_event
- cl_khr_egl_image
- cl_khr_expect_assume
- cl_khr_extended_async_copies
- cl_khr_extended_bit_ops
- cl_khr_extended_versioning
- cl_khr_external_memory
- cl_khr_external_memory_android_hardware_buffer
- cl_khr_external_memory_dma_buf
- cl_khr_external_memory_opaque_fd
- cl_khr_external_memory_win32
- cl_khr_external_semaphore
- cl_khr_external_semaphore_dx_fence
- cl_khr_external_semaphore_opaque_fd
- cl_khr_external_semaphore_sync_fd
- cl_khr_fp16
- cl_khr_fp64
- cl_khr_gl_depth_images
- cl_khr_gl_event
- cl_khr_gl_msaa_sharing
- cl_khr_gl_sharing
- cl_khr_global_int32_base_atomics
- cl_khr_global_int32_extended_atomics
- cl_khr_icd
- cl_khr_il_program
- cl_khr_image2d_from_buffer
- cl_khr_initialize_memory
- cl_khr_int64_base_atomics
- cl_khr_int64_extended_atomics
- cl_khr_integer_dot_product
- cl_khr_kernel_clock
- cl_khr_local_int32_base_atomics
- cl_khr_local_int32_extended_atomics
- cl_khr_mipmap_image
- cl_khr_mipmap_image_writes
- cl_khr_pci_bus_info
- cl_khr_priority_hints
- cl_khr_select_fprounding_mode
- cl_khr_semaphore
- cl_khr_spir
- cl_khr_spirv_queries
- cl_khr_srgb_image_writes
- cl_khr_subgroup_ballot
- cl_khr_subgroup_clustered_reduce
- cl_khr_subgroup_extended_types
- cl_khr_subgroup_named_barrier
- cl_khr_subgroup_non_uniform_arithmetic
- cl_khr_subgroup_non_uniform_vote
- cl_khr_subgroup_rotate
- cl_khr_subgroup_shuffle
- cl_khr_subgroup_shuffle_relative
- cl_khr_subgroups
- cl_khr_suggested_local_work_size
- cl_khr_terminate_context
- cl_khr_throttle_hints
- cl_khr_work_group_uniform_arithmetic
Vendor and Multi-Vendor Extension Specifications
- cl_altera_compiler_mode
- cl_altera_device_temperature
- cl_altera_live_object_tracking
- cl_amd_bus_addressable_memory
- cl_amd_device_attribute_query
- cl_amd_fp64
- cl_amd_media_ops
- cl_amd_media_ops2
- cl_amd_planar_yuv
- cl_arm_controlled_kernel_termination
- cl_arm_core_id
- cl_arm_import_memory
- cl_arm_integer_dot_product
- cl_arm_job_slot_selection
- cl_arm_non_uniform_work_group_size
- cl_arm_printf
- cl_arm_protected_memory_allocation
- cl_arm_scheduling_controls
- cl_arm_shared_virtual_memory
- cl_arm_thread_limit_hint
- cl_ext_atomic_counters_32
- cl_ext_atomic_counters_64
- cl_ext_buffer_device_address
- cl_ext_cxx_for_opencl
- cl_ext_device_fission
- cl_ext_float_atomics
- cl_ext_image_from_buffer
- cl_ext_image_raw10_raw12
- cl_ext_image_requirements_info
- cl_ext_immutable_memory_objects
- cl_ext_migrate_memobject
- cl_img_cached_allocations
- cl_img_generate_mipmap
- cl_img_mem_properties
- cl_img_use_gralloc_ptr
- cl_img_yuv_image
- cl_intel_accelerator
- cl_intel_advanced_motion_estimation
- cl_intel_bfloat16_conversions
- cl_intel_command_queue_families
- cl_intel_create_buffer_with_properties
- cl_intel_d3d11_nv12_media_sharing
- cl_intel_device_attribute_query
- cl_intel_device_partition_by_names
- cl_intel_device_side_avc_motion_estimation
- cl_intel_driver_diagnostics
- cl_intel_dx9_media_sharing
- cl_intel_egl_image_yuv
- cl_intel_exec_by_local_thread
- cl_intel_media_block_io
- cl_intel_mem_alloc_buffer_location
- cl_intel_mem_channel_property
- cl_intel_mem_force_host_memory
- cl_intel_motion_estimation
- cl_intel_packed_yuv
- cl_intel_planar_yuv
- cl_intel_required_subgroup_size
- cl_intel_sharing_format_query
- cl_intel_simultaneous_sharing
- cl_intel_spirv_device_side_avc_motion_estimation
- cl_intel_spirv_media_block_io
- cl_intel_spirv_subgroups
- cl_intel_split_work_group_barrier
- cl_intel_subgroup_2d_block_io
- cl_intel_subgroup_buffer_prefetch
- cl_intel_subgroup_local_block_io
- cl_intel_subgroup_matrix_multiply_accumulate
- cl_intel_subgroup_split_matrix_multiply_accumulate
- cl_intel_subgroups
- cl_intel_subgroups_char
- cl_intel_subgroups_long
- cl_intel_subgroups_short
- cl_intel_unified_shared_memory
- cl_intel_va_api_media_sharing
- cl_loader_info
- cl_nv_compiler_options
- cl_nv_d3d10_sharing
- cl_nv_d3d11_sharing
- cl_nv_d3d9_sharing
- cl_nv_device_attribute_query
- cl_nv_pragma_unroll
- cl_pocl_content_size
- cl_qcom_android_native_buffer_host_ptr
- cl_qcom_ext_host_ptr
- cl_qcom_ext_host_ptr_iocoherent
- cl_qcom_ion_host_ptr
- cl_qcom_perf_hint