OpenCLis a standard for programming heterogeneous computers built from CPUs, GPUs, and other processors. It includes a framework to define the platform in terms of a host, such as a CPU, and one or more compute devices, such as a GPU plus a C-based programming language for writing programs for the compute devices. Using OpenCL, a programmer can write task-based and data-parallel programs that can take advantage of these different types of processors in a single system.