Ceemple now supports OpenCL in selected libraries: ITKFFmpegViennaCL, Boost::compute and OpenCV can use OpenCL devices such as GPUs for improved performance.

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, which 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, it 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 compute device(s) targeted.

In order to use this library, a suitable driver must be installed, usually available from a GPU vendor such as NVIDIA, Intel or AMD. If your GPU has an OpenCl driver, use it, else, use a CPU OpenCL driver.