The CPU is typically called the brain of the computer. The CPU consists
of complex circuitry/algorithms that include branch predictors, memory
virtualization and instruction scheduling, etc. Given this complexity,
it is designed to handle a wide-range of tasks.
The SYCL* and OpenMP* offload programming model
enables implementation of an application on heterogenous CPU and GPU
systems. The term “devices” in SYCL and OpenMP offload can refer to
both CPUs and GPUs.
Modern CPUs have many cores with hyper-threads and high SIMD width,
which can be used for parallel computation. If your workloads have
regions that are compute intensive and can be run in parallel, it is a
good idea to offload those regions to a CPU than to a coprocessor, such
as a GPU or FPGA. Also, because data does not need to be offloaded
through PCIe (unlike for coprocessors or GPU), latency is reduced with
minimal data transfer overhead.
There are two options for running an application on a CPU: the
traditional CPU flow that runs directly on the CPU or a CPU offload flow
that runs on a CPU device. You can use CPU offload with either SYCL or
OpenMP offload applications. Both OpenMP offload and SYCL offload
applications use the OpenCL™ runtime and Intel® oneAPI Threading
Building Blocks (Intel® oneTBB) to run on a CPU as a device.