OpenCL enables software developers to take full advantage of a diverse mix of multi-core CPUs, Graphics Processing Units (GPUs), Cell-type architectures and other parallel processors such as Digital Signal Processors (DSPs). OpenCL consists of an API for coordinating parallel computation and a programming language for specifying those computations. Specifically, the OpenCL standard defines:
* a subset of the C99 programming language with extensions for parallelism;
* an API for coordinating data and task-based parallel computation across a wide range of heterogeneous processors;
* numerical requirements based on the Institute of Electrical and Electronics Engineers' IEEE 754 standard;
* efficient interoperability with OpenGL, OpenGL ES and other graphics APIs.