Kernels are the parts of an OpenCL program that actually execute on a device. The
OpenCL API enables an application to create a context for management of the execution
of OpenCL commands, including those describing the movement of data between
host and OpenCL memory structures and the execution of kernel code that
processes this data to perform some meaningful task.
Like many CPU concurrency models, an OpenCL kernel is syntactically similar
to a standard C function; the key difference is a set of additional keywords and the
execution model that OpenCL kernels implement