oneAPI (compute acceleration)
| oneAPI | |
|---|---|
| Repository | github |
| Operating system | Cross-platform |
| Platform | Cross-platform |
| Type | Open-source software specification for parallel programming |
| Website | www |
oneAPI is an open standard, adopted by Intel,[1] for a unified application programming interface (API) intended to be used across different computing 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, tools, and workflows for each architecture.[2] [3] [4] [5]
oneAPI competes with other GPU computing stacks: CUDA by Nvidia and ROCm by AMD.
Specification
[edit ]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.[6] [7]
Data Parallel C++
[edit ]DPC++ [8] [9] is a programming language implementation of oneAPI, built upon the ISO C++ and Khronos Group SYCL standards.[10] DPC++ is an implementation of SYCL with extensions that are proposed for inclusion in future revisions of the SYCL standard, including: unified shared memory, group algorithms, and sub-groups.[11] [12] [13]
Libraries
[edit ]The set of APIs[6] spans several domains, including libraries for linear algebra, deep learning, machine learning, video 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 parts of the above libraries is available on GitHub.[14]
The oneAPI documentation also lists the "Level Zero" API defining the low-level direct-to-metal interfaces and a set of ray tracing components with its own APIs.[6]
Licensing
[edit ]The licensing of oneAPI components falls into three major categories: open‐source permissive licences, proprietary vendor licences, and hybrid models that combine elements of both. Here an overview of some components:
| Component | Typical license / notes | Source URL |
|---|---|---|
| oneAPI Threading Building Blocks (oneTBB) | "Apache 2.0 – open‐source project under UXL Foundation" | https://github.com/uxlfoundation/oneTBB |
| oneAPI Data Analytics Library (oneDAL) | "Apache 2.0 – open‐source; Intel toolkit binaries may use Intel EULA" | https://github.com/uxlfoundation/oneDAL |
| oneAPI Deep Neural Network Library (oneDNN) | "Apache 2.0 – open‐source under UXL Foundation" | https://github.com/uxlfoundation/oneDNN |
| oneAPI DPC++ Library (oneDPL) | "Apache 2.0 – open‐source data‐parallel algorithms library" | https://github.com/oneapi-src/oneDPL |
| oneAPI Math Library (oneMath) | "Apache 2.0 – unified math interface library" | https://github.com/uxlfoundation/oneMath |
| oneAPI Math Kernel Library (oneMKL) | "Intel Simplified Software License (ISSL) – binary redistribution under Intel terms" | https://www.intel.com/content/www/us/en/developer/articles/tool/onemkl-license-faq.html |
| oneAPI Collective Communications Library (oneCCL) | "Apache 2.0 – open‐source communication layer" | https://github.com/uxlfoundation/oneCCL |
| oneAPI Video Processing Library (oneVPL) | "Apache 2.0 – open‐source media‐processing interface" | https://github.com/uxlfoundation/oneVPL |
| oneAPI DPC++/C++ Compiler | "Open‐source front‐end under Apache 2.0 with LLVM exceptions; Intel binaries under Intel EULA" | https://github.com/intel/llvm |
| oneAPI Level Zero Loader & Runtime | "MIT License – open‐source GPU/accelerator runtime" | https://github.com/oneapi-src/level-zero |
| Intel Integrated Performance Primitives (IPP) | "Intel Simplified Software License (ISSL) – closed‐source library in oneAPI toolkit" | https://community.intel.com/t5/Intel-oneAPI‐Math‐Kernel‐Library/Using‐community‐license‐of‐Intel‐MKL‐for‐multiple‐users/m-p/1095247 |
| Intel oneAPI Base Toolkit (bundle) | "Commercial license (Intel EULA) – free download but subject to Intel’s terms" | https://alfasoft.com/ab/software/development-tools/high-performance-computing-hpc/intel-oneapi-base-toolkit/ |
| Intel oneAPI Base & IoT Toolkit (bundle) | "Named‐user or seat‐based commercial license under Intel EULA" | https://alfasoft.com/ab/software/development-tools/mobile-and-embedded/intel-oneapi-base-iot-toolkit/ |
| Intel oneAPI HPC Toolkit (bundle) | "Commercial binaries under Intel EULA/ISSL; not fully open‐source" | https://www.intel.com/content/www/us/en/docs/oneapi/installation-guide-linux/2023-0/list-available-toolkits-components-and-runtime.html |
| Intel oneAPI IoT Toolkit (bundle) | "Commercial license for embedded/IoT workflows (Intel EULA)" | https://www.intel.com/content/www/us/en/docs/oneapi/installation-guide-linux/2023-0/list-available-toolkits-components-and-runtime.html |
| Intel oneAPI Rendering Toolkit (bundle) | "Some sub‐components open‐source (e.g., Embree/OSPRay) under Apache 2.0; toolkit packaging commercial" | https://oneapi-src.github.io/oneapi-ci/ |
Permissive open‐source licences
[edit ]These licences (for example the Apache License 2.0) allow broad rights such as use, modification, distribution (in source or binary form) and carry OSI‐approval. Many oneAPI libraries use such licences, enabling community contribution and redistribution under minimal restriction.
Proprietary vendor licences
[edit ]Some oneAPI components may be distributed under proprietary or commercial licences (for example Intel’s End‐User Licence Agreement (EULA) or the Intel Simplified Software Licence (ISSL)). Software released under the ISSL license are considered to not fully comply with standard open‐source definitions [15] .
Hardware abstraction layer
[edit ]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
[edit ]Intel has released oneAPI production toolkits that implement the specification and add CUDA code migration, analysis, and debug tools.[19] [20] [21] These include the Intel oneAPI DPC++/C++ Compiler,[22] Intel Fortran Compiler, Intel VTune Profiler[23] and multiple performance libraries.
Codeplay has released an open-source layer[24] [25] [26] to allow oneAPI and SYCL/DPC++ to run atop Nvidia GPUs via CUDA.
University of Heidelberg has developed a SYCL/DPC++ implementation for both AMD and Nvidia GPUs.[27]
Huawei released a DPC++ compiler for their Ascend AI Chipset[28]
Fujitsu has created an open-source ARM version of the oneAPI Deep Neural Network Library (oneDNN)[29] for their Fugaku CPU.
Unified Acceleration Foundation (UXL) and the future for oneAPI
[edit ]Unified Acceleration Foundation (UXL) is a new technology consortium that are working on the continuation of the OneAPI initiative, with the goal to create a new open standard accelerator software ecosystem, related open standards and specification projects through Working Groups and Special Interest Groups (SIGs). The goal will compete with Nvidia's CUDA. The main companies behind it are Intel, Google, ARM, Qualcomm, Samsung, Imagination, and VMware.[30]
References
[edit ]- ^ Fortenberry & Tomov 2022, p. 22.
- ^ "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日.
- ^ a b c "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-SRC". GitHub.
- ^ "Licenses that cannot be included in Apache Software Foundation products". www.apache.org. Retrieved 2025年11月05日.
- ^ Verheyde, Arne (8 December 2019). "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日.
- ^ "Data Parallel C++ for Cross-Architecture Applications". Intel. Retrieved 2021年10月07日.
- ^ "Fix Performance Bottlenecks with Intel® VTuneTM Profiler". Intel. Retrieved 2021年10月07日.
- ^ "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日.
- ^ Salter, Jim (2020年09月30日). "Intel, Heidelberg University team up to bring Radeon GPU support to AI". Ars Technica. Retrieved 2021年10月07日.
- ^ Extending DPC++ with Support for Huawei Ascend AI Chipset, 27 April 2021, retrieved 2021年10月07日
- ^ fltech (19 November 2020). "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日.
- ^ "Exclusive: Behind the plot to break Nvidia's grip on AI by targeting software". Reuters . Retrieved 2024年04月05日.
Sources
[edit ]- Fortenberry, Anna; Tomov, Stanimire (2022). Extending MAGMA Portability with OneAPI (PDF). 2022 Workshop on Accelerator Programming Using Directives (WACCPD). IEEE. pp. 22–31. .
External links
[edit ]- Official website Edit this at Wikidata
- oneAPI on GitHub
- Bringing Nvidia GPU support to SYCL developers
- Reinders, James; et al. (2021). Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL. Open Access Book. Springer. doi:10.1007/978-1-4842-5574-2. ISBN 978-1-4842-5574-2. S2CID 226231933.
- oneAPI for NVIDIA GPUs 202510
- oneAPI for AMD GPUs 202510