OpenCL™ (Open Computing Language)

OpenCL is an open source framework written in OpenCL C (based on C99) for writing programs, that can be executed across wide-range of computing platforms which is consisting of CPUs (central processing units), GPUs (graphics processing units), DSPs (digital signal processors) FPGAs (field-programmable gate arrays), and other processors or hardware accelerators.

OpenCL™ is an open standard, maintained by the non-profit technology organization, named Khronos Group.

It is royalty-free standard for cross-platform, parallel programming of wide-range of processors generally found in personal computers, servers, mobile devices, and embedded system platforms.

OpenCL is a methodology for system architects and programming model for software engineers. It is based on standard ANSI C (C99) with extensions to extract parallelism, it allows the use of a C-based programming language for developing code across different platforms such as personal computers, servers, mobile devices, and embedded system.


Memory hierarchy in OpenCL

It defines a 4 level memory hierarchy for the computing device

  1. global memory: Its global memory is shared by all processing elements, but also has high access latency (__global);
  2. read-only memory: smaller, low latency, writable by the host CPU but not the compute devices (__constant);
  3. local memory: shared by a group of processing elements (__local);
  4. per-element private memory (registers; __private).

But at the same time it is to be noted that not every device needs to implement each level of this hierarchy in its hardware.

OpenCL Versions :

OpenCL 1.0 August 28, 2009

OpenCL 1.1 June 14, 2010
OpenCL 1.2 November 15, 2011
OpenCL 2.0 November 18, 2013
OpenCL 2.1 March 3, 2015
OpenCL 2.2 May 16, 2017

Future of OpenCL

In the time of the release of OpenCL version 2.2, the Khronos Group announced that they are going to merge it into Vulkan in the future, and this will add some more improvement and extra features.

Leave a Reply

Your email address will not be published. Required fields are marked *