OpenCL™ is the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices. OpenCL (Open Computing Language) greatly improves speed and responsiveness for a wide spectrum of applications in numerous market categories from gaming and entertainment to scientific and medical software.
OpenCL views a computing system as consisting of a number of compute devices, which might be central processing units (CPUs) or “accelerators” such as graphics processing units (GPUs), attached to a host processor (a CPU). It defines a C-like language for writing programs, called kernels, that execute on the compute devices. A single compute device typically consists of many individual processing elements (PEs) and a single kernel execution can run on all or many of the PEs in parallel.
In addition, OpenCL defines an application programming interface (API) that allows programs running on the host to launch kernels on the compute devices and manage device memory, which is (at least conceptually) separate from host memory. Programs in the OpenCL language are intended to be compiled at run-time, so that OpenCL-using applications are portable between implementations for various host devices. The OpenCL standard defines host APIs for C and C++; third-party APIs exist for other programming languages such as Python or Java. An implementation of the OpenCL standard consists of a library that implements the API for C and C++, and an OpenCL C compiler for the computes device(s) targeted.
In order to use the OpenCL library, a suitable driver must be installed, usually available from the GPU vendor such as NVIDIA, Intel or AMD. If your GPU has an OpenCl driver, use it, else, use a CPU OpenCL driver.