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 from gaming and entertainment to scientific and medical software.

OpenCL 2.1 is a significant evolution of this widely used standard that delivers the functionality demanded by the developer community – while preserving backwards compatibility and being able to ship on any OpenCL 2.0-capable hardware.

  • Support for the new Khronos SPIR-V™ intermediate language in core for kernel language flexibility, sharing of common compiler front-ends, and the ability to ship kernels without exposing source code 
  • Enhancements to the OpenCL API including:
    • Subgroups, which enable finer grain control of hardware threading, are now in core, together with additional subgroup query operations for increased flexibility;
    • clCloneKernel enables copying of kernel objects and state for safe implementation of copy constructors in wrapper classes;
    • Low-latency device timer queries for alignment of profiling data between device and host code.

The OpenCL 2.1 specification is now finalized place the power of SPIR-V into the hands of developers as quickly as possible while Khronos finalizes the OpenCL C++ kernel language, which is expected to be released as early as mid-2016.  Your feedback is always welcome on the OpenCL forums.

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

OpenCL – Portable Heterogeneous Computing

  • OpenCL = Two APIs and Two Kernel languages
    • C Platform Layer API to query, select and initialize compute devices
    • OpenCL C and (soon) OpenCL C++ kernel languages to write parallel code
    • C Runtime API to build and execute kernels across multiple devices
  • One code tree can be executed on CPUs, GPUs, DSPs, FPGA and hardware
    • Dynamically balance work across available processors

OpenCL 2.1 Released – November 2015

  • Support for the SPIR-V 1.0 intermediate language in core
    • E.g. SPIR-V used to ingest from diverse language front-ends
    • OpenCL C ingestion still supported to preserve kernel code investment
  • OpenCL API updates
    • E.g. subgroups and subgroup queries in core
  • Runs on any OpenCL 2.0-capable hardware
    • Only driver update required

OpenCL 2.1 API Enhancements

  • clCreateProgramWithIL
    • SPIR-V support built-in to the runtime
  • Subgroup query operations
    • Subgroups expose hardware threading in the core feature set
  • clCloneKernel enables copying of kernel objects and state
    • Safe implementation of copy constructors in wrapper classes
  • Low-latency device timer queries
    • Support alignment of profiling between device and host code
  • Priority and throttle hint extensions for queues
    • Specify execution priority on a per-queue basis
  • Zero-size enqueue
    • Zero-sized dispatches are valid from the host

OpenCL Ecosystem

Implementers of OpenCL

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

View a complete list of companies and their conformant products.