Visible to Intel only — GUID: GUID-5A82F15B-3580-4CB8-B7B0-A8A245294055
Introduction to oneAPI Programming
Obtaining high compute performance on today’s modern computer architectures requires code that is optimized, power-efficient, and scalable. The demand for high performance continues to increase due to needs in AI, video analytics, data analytics, as well as in traditional high-performance computing (HPC).
Central Processing Units (CPUs) and Graphics Processing Units (GPUs) are fundamental computing engines. But as computing demands evolve, it is not always clear what the differences are between CPUs and GPUs and which workloads are best suited to each.
Modern workload diversity has resulted in a need for architectural diversity; no single architecture is best for every workload. A mix of scalar, vector, matrix, and spatial (SVMS) architectures deployed in CPU, GPU, AI, and FPGA accelerators is required to extract the needed performance.
Today, coding for CPUs and accelerators (such as GPUs) requires different languages, libraries, and tools. That means each hardware platform requires separate software investments and provides limited application code reusability across different target architectures.
The oneAPI programming model simplifies the programming of CPUs and accelerators using modern C++ features to express parallelism using SYCL*. SYCL enables code reuse for the host (such as a CPU) and accelerators (such as a GPU) using a single source language, with execution and memory dependencies clearly communicated. Mapping within the SYCL code can be used to transition the application to run on the hardware, or set of hardware, that best accelerates the workload. A host is available to simplify development and debugging of device code, even on platforms that do not have an accelerator available.
oneAPI also supports programming on CPUs and accelerators using the OpenMP* offload feature with existing C/C++ or Fortran code.
For more information on determining whether or not to use a CPU or GPU, see CPU vs. GPU: Making the Most of Both.
Once you have gained an understanding of the oneAPI programming model, see the oneAPI GPU Optimization Guide for information on how to optimize your software.
Learn more about the oneAPI initiative and programming model at oneapi.com. The site includes the oneAPI Specification, SYCL Language Guide and API Reference, and other resources.