oneAPI (programming model)

From HandWiki

oneAPI[1][2][3][4] is a cross-industry initiative for an open, standards-based unified programming model that creates a common developer experience across compute accelerator architectures. Its objective is to deliver an efficient, performant programming model that eliminates the need for developers to maintain separate code bases, multiple programming languages, and different tools and workflows for each architecture.

The oneAPI Specification

The oneAPI specification[5] extends existing developer programming models to enable multiple hardware architectures through a data-parallel language, a set of library APIs, and a low-level hardware interface to support cross-architecture programming. It builds upon industry standards and provides an open, cross-platform developer stack.

The Language – Data Parallel C++

DPC++[6][7] is an open, cross-architecture language built upon the ISO C++ and Khronos Group SYCL standards[8]. DPC++ extends these standards with explicit parallel constructs like sub-groups and unified shared memory offload interfaces to support a broad range of computing architectures and processors, including CPUs and accelerators. Extensions are contributed back to standards bodies. An example of this is the contribution of unified shared memory, group algorithms and sub-groups to SYCL 2020.[9][10]

The oneAPI Libraries

The set of APIs[11] spans several domains that benefit from acceleration, including an interface for deep learning; general libraries for linear algebra math, video, and media processing; and others.

Library Name Short

Name

Description
oneAPI DPC++ Library oneDPL Algorithms and functions to speed DPC++ kernel programming
oneAPI Math Kernel Library oneMKL Math routines including matrix algebra, FFT, and vector math
oneAPI Data Analytics Library oneDAL Machine learning and data analytics functions
oneAPI Deep Neural Network Library oneDNN Neural networks functions for deep learning training and inference
oneAPI Collective Communications Library oneCCL Communication patterns for distributed deep learning
oneAPI Threading Building Blocks oneTBB Threading and memory management template library
oneAPI Video Processing Library oneVPL Real-time video encode, decode, transcode, and processing

The Hardware Abstraction Layer

oneAPI Level Zero[12][13][14], the low-level hardware interface, defines a set of capabilities and services that a hardware accelerator needs to interface with compiler runtimes and other developer tools.

Implementations

Intel has released a oneAPI Beta Product[15][16] that implements the specification and adds migration, analysis, and debug tools.

Codeplay has released an open-source layer[17][18][19] to allow oneAPI and SYCL / Data Parallel C++ to run atop Nvidia GPUs via CUDA.

References

  1. "Intel Expands its Silicon Portfolio, and oneAPI Software Initiative for Next-Generation HPC" (in en-US). 2019-12-09. https://www.hpcwire.com/2019/12/09/intel-expands-its-silicon-portfolio-and-oneapi-software-initiative-for-next-generation-hpc/. 
  2. "Intel Debuts New GPU – Ponte Vecchio – and Outlines Aspirations for oneAPI" (in en-US). 2019-11-18. https://www.hpcwire.com/2019/11/17/intel-debuts-new-gpu-ponte-vecchio-and-outlines-aspirations-for-oneapi/. 
  3. "SC19: Intel Unveils New GPU Stack, oneAPI Development Effort - ExtremeTech". https://www.extremetech.com/computing/302284-sc19-intel-unveils-new-gpu-stack-oneapi-development-effort. 
  4. Kennedy, Patrick (2018-12-24). "Intel One API to Rule Them All Is Much Needed to Expand TAM" (in en-US). https://www.servethehome.com/intel-one-api-to-rule-them-all-is-much-needed/. 
  5. "The oneAPI Specification". https://spec.oneapi.com/oneAPI/. 
  6. "Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems Using C++ and SYCL". https://www.apress.com/gp/data-parallel-c-advanced-chapters-just-released/17382670. 
  7. Team, Editorial (2019-12-16). "Heterogeneous Computing Programming: oneAPI and Data Parallel C++" (in en-US). https://insidebigdata.com/2019/12/16/heterogeneous-computing-programming-oneapi-and-data-parallel-c/. 
  8. "The Khronos Group" (in en). 2020-02-11. https://www.khronos.org/news/permalink/intels-one-api-project-incorporates-sycl. 
  9. "Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification" (in en). 2020-06-30. https://www.khronos.org/news/press/khronos-releases-sycl-2020-provisional-specification. 
  10. staff (2020-06-30). "New, Open DPC++ Extensions Complement SYCL and C++" (in en-US). https://insidehpc.com/2020/06/new-open-dpc-extensions-complement-sycl-and-c/. 
  11. "oneAPI specification elements". https://www.oneapi.com/spec/. 
  12. Verheyde 2019-12-08T16:11:19Z, Arne. "Intel Releases Bare-Metal oneAPI Level Zero Specification" (in en). https://www.tomshardware.com/news/intel-releases-bare-metal-oneapi-level-zero-specification. 
  13. "Intel's Compute Runtime Adds oneAPI Level Zero Support - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=Intel-oneAPI-Level-Zero. 
  14. "Initial Benchmarks With Intel oneAPI Level Zero Performance - Phoronix". https://www.phoronix.com/scan.php?page=article&item=intel-level-zero&num=1. 
  15. "Intel oneAPI Product". https://software.intel.com/en-us/oneapi. 
  16. "oneAPI Training". https://www.colfax-intl.com/training/intel-oneapi-training. 
  17. "Codeplay Open Sources a Version of DPC++ for Nvidia GPUs" (in en-US). 2020-02-05. https://www.hpcwire.com/2020/02/04/codeplay-open-sources-a-version-of-computecpp-for-nvidia-gpus/. 
  18. "Intel's oneAPI / DPC++ / SYCL Will Run Atop NVIDIA GPUs With Open-Source Layer - Phoronix". https://www.phoronix.com/scan.php?page=news_item&px=Intel-oneAPI-DPC-SYCL-NVIDIA-CU. 
  19. "Codeplay - Codeplay contribution to DPC++ brings SYCL support for NVIDIA GPUs". https://www.codeplay.com/portal/02-03-20-codeplay-contribution-to-dpcpp-brings-sycl-support-for-nvidia-gpus. 

External links