OpenCL Overview


The open standard for parallel programming of heterogeneous systems

OpenCL™ (Open Computing Language) is the open, royalty-free standard for cross-platform, parallel programming of diverse processors found in personal computers, servers, mobile devices and embedded platforms. OpenCL greatly improves the speed and responsiveness of a wide spectrum of applications in numerous market categories including gaming and entertainment titles, scientific and medical software, professional creative tools, vision processing, and neural network training and inferencing.

OpenCL 2.2 brings the OpenCL C++ kernel language into the core specification for significantly enhanced parallel programming productivity:

  1. OpenCL C++ kernel language is a static subset of the C++14 standard and includes classes, templates, lambda expressions, function overloads and many other constructs for generic and meta-programming
  2. Leverages the new Khronos SPIR-V™ 1.2 intermediate language which fully supports the OpenCL C++ kernel language
  3. OpenCL library functions can now take advantage of the C++ language to provide increased safety and reduced undefined behavior while accessing features such as atomics, iterators, images, samplers, pipes, and device queue built-in types and address spaces
  4. Pipe storage is new device-side type in OpenCL 2.2 that is useful for FPGA implementations by making connectivity size and type known at compile time, enabling efficient device-scope communication between kernels
  5. OpenCL 2.2 also includes features for enhanced optimization of generated code: applications can provide the value of specialization constant at SPIR-V compilation time, a new query can detect non-trivial constructors and destructors of program scope global objects, and user callbacks can be set at program release time

With OpenCL 2.2, Khronos has, for the first time, released the full source of the OpenCL 2.2 specifications and conformance tests for OpenCL 2.2 onto GitHub to enable developers to test implementations, directly suggest bug fixes and to re-mix specification and reference materials to suit their own use. The conformance tests for OpenCL versions 1.2, 2.0 and 2.1 have also been released on GitHub.

OpenCL 2.2

OpenCL 2.1

OpenCL 2.1 C++

  • The OpenCL 2.1 C++ Provisional Specification is available in the Khronos Registry

OpenCL 2.0

OpenCL 1.2

OpenCL 1.1

OpenCL 1.0

The OpenCL 1.0 Online Reference Pages

OpenCL Ecosystem

OpenCL Ecosystem

OpenCL 2.2

Defines C++ kernel language

  • Together with SYCL 2.2 for single source C++ programming

SPIR-V 1.2 adds OpenCL C++ support

  • Initializer and finalizer function execution modes for constructors and destructors
  • Named barriers, subgroup execution, and program scope pipes…

Runs on any OpenCL 2.0-capable hardware

  • Only driver update required

Provisional release

  • Seeking industry feedback before finalization
  • Aiming for finalization at SIGGRAPH or SC16 – depends on feedback
OpenCL 2.2

OpenCL C++

The OpenCL C++ kernel language is a static subset of C++14

  • Frees developers from low-level coding details without sacrificing performance

C++14 features removed from OpenCL C++ for parallel programming

  • Exceptions, Allocate/Release memory, Virtual functions and abstract classes Function pointers, Recursion and goto

Classes, lambda functions, templates, operator overloading etc…

  • Fast and elegant sharable code - reusable device libraries and containers
  • Templates enable meta-programming for highly adaptive software
  • Lambdas used to implement nested/dynamic parallelism

C++11-based standard library optimized for data-parallel programming

  • Atomics, meta-programming & type traits, math functions…
  • Plus new library features: Work-item & Work-group functions, Dynamic parallelism, Image & Pipe functions…

Highly adaptive parallel software that delivers tuned performance across diverse platforms


SPIR-V Ecosystem

Implementers of OpenCL

  • Xilinx, Inc.
  • Vivante Corporation
  • Texas Instruments
  • Samsung Electronics
  • STMicroelectronics International NV
  • NVIDIA Corporation
  • MediaTek Inc
  • Marvell
  • Intel
  • Imagination Technologies
  • IBM Corporation
  • Creative Labs
  • Arm Limited
  • Apple, Inc.
  • Altera Corporation
  • AMD

View a complete list of companies and their conformant products.