OpenCL (Open Computing Language) is an open royalty-free standard for general purpose parallel programming across CPUs, GPUs and other processors, giving software developers portable and efficient access to the power of these heterogeneous processing platforms.

OpenCL supports a wide range of applications, ranging from embedded and consumer software to HPC solutions, through a low-level, high-performance, portable abstraction. By creating an efficient, close-to-the-metal programming interface, OpenCL will form the foundation layer of a parallel computing ecosystem of platform-independent tools, middleware and applications.

OpenCL consists of an API for coordinating parallel computation across heterogeneous processors; and a cross-platform programming language with a well-specified computation environment.

The OpenCL standard:

  • Supports both data- and task-based parallel programming models

  • Utilizes a subset of ISO C99 with extensions for parallelism

  • Defines consistent numerical requirements based on IEEE 754

  • Defines a configuration profile for handheld and embedded devices

  • Efficiently interoperates with OpenGL, OpenGL ES, and other graphics APIs

The specification is divided into a core specification that any OpenCL compliant implementation must support; a handheld/embedded profile which relaxes the OpenCL compliance requirements for handheld and embedded devices; and a set of optional extensions that are likely to move into the core specification in later revisions of the OpenCL specification.

Reference Page Sources

Khronos publishes the OpenCL 3.0 reference pages in the OpenCL-Registry repository. The sources for these pages are in Asciidoctor format, and are maintained in the OpenCL-Docs repository. If you encounter problems with these pages, please file an issue in OpenCL-Docs.