oneAPI (compute acceleration)
![]() | |
Repository | github |
---|---|
Operating system | Cross-platform |
Platform | Cross-platform |
Type | Open-source software specification for parallel programming |
Website | www |
oneAPI is an open standard for a unified application programming interface intended to be used across different compute accelerator (coprocessor) architectures, including GPUs, AI accelerators and field-programmable gate arrays. It is intended to eliminate the need for developers to maintain separate code bases, multiple programming languages, and different tools and workflows for each architecture.[1][2][3][4]
The oneAPI specification
The oneAPI specification 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.[5][6]
Data Parallel C++
DPC++[7][8] is an open, cross-architecture language built upon the ISO C++ and Khronos Group SYCL standards.[9] 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.[10][11][12]
oneAPI libraries
The set of APIs[13] 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 source code of some implementations of the above libraries is available on GitHub.[14] Note that some libraries are just glue code between the oneAPI DPC++ interface and some other library. For example, the open-source "oneAPI Math Kernel Library" relies on actual BLAS implementations to work, one of which is the confusingly named, closed-source "Intel oneAPI Math Kernel Library" better known as Intel MKL.[15]
Hardware abstraction layer
oneAPI Level Zero,[16][17][18] 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 production quality oneAPI toolkits that implement the specification and add migration, analysis, and debug tools.[19][20][21] These include the Intel C++ compiler, Intel Fortran compiler, VTune and multiple performance libraries.
Codeplay has released an open-source layer[22][23][24] to allow oneAPI and SYCL / Data Parallel C++ to run atop Nvidia GPUs via CUDA.
Fujitsu has created an open-source ARM version of the oneAPI Deep Neural Network Library (oneDNN)[25] for their Fugaku CPU.
References
- ^ "Intel Expands its Silicon Portfolio, and oneAPI Software Initiative for Next-Generation HPC". HPCwire. 2019-12-09. Retrieved 2020-02-11.
- ^ "Intel Debuts New GPU – Ponte Vecchio – and Outlines Aspirations for oneAPI". HPCwire. 2019-11-18. Retrieved 2020-02-11.
- ^ "SC19: Intel Unveils New GPU Stack, oneAPI Development Effort - ExtremeTech". www.extremetech.com. Retrieved 2020-02-11.
- ^ Kennedy, Patrick (2018-12-24). "Intel One API to Rule Them All Is Much Needed to Expand TAM". ServeTheHome. Retrieved 2020-02-11.
- ^ "The oneAPI Specification". oneAPI.
- ^ "Preparing for the Arrival of Intel's Discrete High-Performance GPUs". HPCwire. 2021-03-23. Retrieved 2021-03-29.
- ^ "Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems Using C++ and SYCL". Apress.
- ^ Team, Editorial (2019-12-16). "Heterogeneous Computing Programming: oneAPI and Data Parallel C++". insideBIGDATA. Retrieved 2020-02-11.
- ^ "The Khronos Group". The Khronos Group. 2020-02-11. Retrieved 2020-02-11.
- ^ "Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification". The Khronos Group. 2020-06-30. Retrieved 2020-07-06.
- ^ staff (2020-06-30). "New, Open DPC++ Extensions Complement SYCL and C++". insideHPC. Retrieved 2020-07-06.
- ^ "SYCL 2020 Launches with New Name, New Features, and High Ambition". HPCwire. 2021-02-09. Retrieved 2021-02-16.
- ^ "oneAPI specification elements". oneAPI.
- ^ "oneAPI-SRC". GitHub.
- ^ "oneapi-src/oneMKL". oneAPI-SRC. 19 March 2021.
oneMKL interfaces are an open-source implementation of the oneMKL Data Parallel C++ (DPC++) interface according to the oneMKL specification. It works with multiple devices (backends) using device-specific libraries underneath.
- ^ Verheyde 2019-12-08T16:11:19Z, Arne. "Intel Releases Bare-Metal oneAPI Level Zero Specification". Tom's Hardware. Retrieved 2020-02-11.
- ^ "Intel's Compute Runtime Adds oneAPI Level Zero Support - Phoronix". www.phoronix.com. Retrieved 2020-03-10.
- ^ "Initial Benchmarks With Intel oneAPI Level Zero Performance - Phoronix". www.phoronix.com. Retrieved 2020-04-13.
- ^ "Intel Champions XPU Vision With oneAPI, Data Center GPUs - SDxCentral". SDxCentral. 2020-11-11. Retrieved 2020-11-11.
- ^ "Intel Debuts oneAPI Gold and Provides More Details on GPU Roadmap". HPCwire. 2020-11-11. Retrieved 2020-11-11.
- ^ Moorhead, Patrick. "Intel Announces Gold Release Of OneAPI Toolkits And New Intel Server GPU". Forbes. Retrieved 2020-12-08.
- ^ "Codeplay Open Sources a Version of DPC++ for Nvidia GPUs". HPCwire. 2020-02-05. Retrieved 2020-02-12.
- ^ "Intel's oneAPI / DPC++ / SYCL Will Run Atop NVIDIA GPUs With Open-Source Layer - Phoronix". www.phoronix.com. Retrieved 2019-12-06.
- ^ "Codeplay - Codeplay contribution to DPC++ brings SYCL support for NVIDIA GPUs". www.codeplay.com. Retrieved 2020-02-11.
- ^ fltech. "A Deep Dive into a Deep Learning Library for the A64FX Fugaku CPU - The Development Story in the Developer's Own Words". fltech - 富士通研究所の技術ブログ (in Japanese). Retrieved 2021-02-10.