OpenCL™ is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs and other processors. It is an open, royalty-free, cross-platform standard. OpenCL includes a language (based on C99) for writing kernels (functions that execute on OpenCL devices) and an API (Application Programming Interface) that is used to define OpenCL objects, execute OpenCL kernels and control the OpenCL platform. OpenCL can be used on personal computers, workstations, handheld and embedded devices. It is supported on Windows, Linux, Mac OS X and most major operating systems.
OpenCL is an emerging technology, aimed for wide industrial usage in markets that require large amounts of parallel processing, such as scientific applications, image processing, computer games, medical computation, CAD, finance and more. OpenCL was initially developed by Apple Inc., which holds it's trademark rights. The OpenCL specification was submitted by Apple to the Khronos Group. Since then, OpenCL is being managed under the Khronos Group and its Compute Working Group.
Software developers do not need to license OpenCL to use it in their applications. They can simply link to a library provided by the operating system or a hardware vendor. The OpenCL API provides developers with a complete set of functions to execute parallel compute tasks. The design of the API gives the developer a lot of freedom, but requires deep understanding of the underlying devices for gaining the highest performance.