OpenCL is an open standard for parallel programming of heterogeneous systems such as CPUs, GPUs, and other processors. It provides portability across platforms. [OpenCL provides a] data-parallel and task-parallel programming model [with work-items and work-groups]. The standard includes memory models, programming interfaces, and a C-based language for writing kernels. OpenCL aims to harness the power of parallel computing on systems with diverse processors.