# OneAPI (acceleració informàtica)

oneAPI és un estàndard obert, adoptat per Intel, per a una interfície de programació d'aplicacions (API) unificada destinada a utilitzar-se en diferents arquitectures d'acceleradors (coprocessadors), incloses les GPU, acceleradors d'IA i matrius de portes programables en camp. Es pretén eliminar la necessitat que els desenvolupadors mantinguin bases de codi separades, diversos llenguatges de programació, eines i fluxos de treball per a cada arquitectura.
oneAPI competeix amb altres piles de computació de GPU: CUDA de Nvidia i ROCm d'AMD.

## Especificació

L'especificació oneAPI amplia els models de programació de desenvolupadors existents per habilitar múltiples arquitectures de maquinari mitjançant un llenguatge paral·lel de dades, un conjunt d'API de biblioteca i una interfície de maquinari de baix nivell per donar suport a la programació entre arquitectures. Es basa en els estàndards de la indústria i proporciona una pila de desenvolupadors oberta i multiplataforma.

## Dades paral·lel C++

DPC++ és una implementació de llenguatge de programació de oneAPI, construïda sobre els estàndards ISO C++ i Khronos Group SYCL. DPC++ és una implementació de SYCL amb extensions que es proposen per incloure'ls en futures revisions de l'estàndard SYCL, que inclouen: memòria compartida unificada, algorismes de grup i subgrups.

## Biblioteques

El conjunt d'API abasta diversos dominis, incloses biblioteques per a àlgebra lineal, aprenentatge profund, aprenentatge automàtic, processament de vídeo i altres.
| Nom de la biblioteca | Curt Nom | Descripció |
| Biblioteca oneAPI DPC++ | oneDPL | Algorismes i funcions per accelerar la programació del nucli DPC++ |
| Biblioteca del nucli matemàtic oneAPI | oneMKL | Rutines matemàtiques que inclouen àlgebra matricial, FFT i matemàtiques vectorials |
| Biblioteca d'anàlisi de dades oneAPI | oneDAL | Funcions d'aprenentatge automàtic i anàlisi de dades |
| Biblioteca de xarxa neuronal profunda oneAPI | oneDNN | Les xarxes neuronals funcionen per a l'entrenament i la inferència d'aprenentatge profund |
| Biblioteca de comunicacions col·lectives oneAPI | oneCCL | Patrons de comunicació per a l'aprenentatge profund distribuït |
| OneAPI Threading Building Blocks | oneTBB | Biblioteca de plantilles de gestió de subprocesos i memòria |
| Biblioteca de processament de vídeo oneAPI | oneVPL | Codificació, descodificació, transcodificació i processament de vídeo en temps real |
El codi font de parts de les biblioteques anteriors està disponible a GitHub.
La documentació oneAPI també enumera l'API "Level Zero" que defineix les interfícies de baix nivell directe a metall i un conjunt de components de traçat de raigs amb les seves pròpies API.

## Capa d'abstracció de maquinari

oneAPI Level Zero, la interfície de maquinari de baix nivell, defineix un conjunt de capacitats i serveis que un accelerador de maquinari necessita per interactuar amb els temps d'execució del compilador i altres eines de desenvolupament.

## Implementacions

Intel ha llançat conjunts d'eines de producció oneAPI que implementen l'especificació i afegeixen eines de migració, anàlisi i depuració de codi CUDA. Aquests inclouen el compilador Intel oneAPI DPC++/C++, Intel Fortran Compiler, Intel VTune Profiler i diverses biblioteques de rendiment.
Codeplay ha llançat una capa de codi obert per permetre que oneAPI i SYCL/DPC++ s'executin sobre les GPU Nvidia mitjançant CUDA.
La Universitat de Heidelberg ha desenvolupat una implementació SYCL/DPC++ per a les GPU AMD i Nvidia.
Huawei va llançar un compilador DPC++ per al seu chipset Ascend AI.
Fujitsu ha creat una versió ARM de codi obert de la biblioteca de xarxa neuronal profunda oneAPI (oneDNN) per a la seva CPU Fugaku.

## Unified Acceleration Foundation (UXL) i el futur d'oneAPI

Unified Acceleration Foundation (UXL) és un nou consorci tecnològic que treballa en la continuïtat de la iniciativa OneAPI, amb l'objectiu de crear un nou ecosistema de programari accelerador d'estàndards oberts, estàndards oberts relacionats i projectes d'especificació a través de grups de treball i grups d'interès especial (SIG). L'objectiu competirà amb el CUDA de Nvidia. Les principals empreses que hi ha darrere són Intel, Google, ARM, Qualcomm, Samsung, Imagination i VMware.

## Referències

* ↑ Fortenberry i Tomov, 2022, p. 22.
* ↑ «Intel Expands its Silicon Portfolio, and oneAPI Software Initiative for Next-Generation HPC» (en anglès americà). HPCwire, 09-12-2019. [Consulta: 11 febrer 2020].
* ↑ «Intel Debuts New GPU – Ponte Vecchio – and Outlines Aspirations for oneAPI» (en anglès americà). HPCwire, 18-11-2019. [Consulta: 11 febrer 2020].
* ↑ «SC19: Intel Unveils New GPU Stack, oneAPI Development Effort - ExtremeTech» (en anglès). www.extremetech.com. [Consulta: 11 febrer 2020].
* ↑ Kennedy, Patrick. «Intel One API to Rule Them All Is Much Needed to Expand TAM» (en anglès americà). ServeTheHome, 24-12-2018. [Consulta: 11 febrer 2020].
* ↑ «oneAPI Specification» (en anglès). oneAPI.
* ↑ «Preparing for the Arrival of Intel's Discrete High-Performance GPUs» (en anglès americà). HPCwire, 23-03-2021. [Consulta: 29 març 2021].
* ↑ «Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems Using C++ and SYCL» (en anglès). Apress.
* ↑ Team, Editorial. «Heterogeneous Computing Programming: oneAPI and Data Parallel C++» (en anglès americà). insideBIGDATA, 16-12-2019. [Consulta: 11 febrer 2020].
* ↑ «The Khronos Group» (en anglès). The Khronos Group, 11-02-2020. [Consulta: 11 febrer 2020].
* ↑ «Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification» (en anglès). The Khronos Group, 30-06-2020. [Consulta: 6 juliol 2020].
* ↑ staff. «New, Open DPC++ Extensions Complement SYCL and C++» (en anglès americà). insideHPC, 30-06-2020. [Consulta: 6 juliol 2020].
* ↑ «SYCL 2020 Launches with New Name, New Features, and High Ambition» (en anglès americà). HPCwire, 09-02-2021. [Consulta: 16 febrer 2021].
* ↑ «oneAPI Specification» (en anglès). oneAPI.
* ↑ «oneAPI-SRC» (en anglès). GitHub.
* ↑ «oneAPI Specification» (en anglès). oneAPI.
* ↑ Verheyde 2019-12-08T16:11:19Z, Arne. «Intel Releases Bare-Metal oneAPI Level Zero Specification» (en anglès). Tom's Hardware. [Consulta: 11 febrer 2020].
* ↑ «Intel's Compute Runtime Adds oneAPI Level Zero Support - Phoronix» (en anglès). www.phoronix.com. [Consulta: 10 març 2020].
* ↑ «Initial Benchmarks With Intel oneAPI Level Zero Performance - Phoronix» (en anglès). www.phoronix.com. [Consulta: 13 abril 2020].
* ↑ «Intel Debuts oneAPI Gold and Provides More Details on GPU Roadmap» (en anglès americà). HPCwire, 11-11-2020. [Consulta: 11 novembre 2020].
* ↑ Moorhead, Patrick. «Intel Announces Gold Release Of OneAPI Toolkits And New Intel Server GPU» (en anglès). Forbes. [Consulta: 8 desembre 2020].
* ↑ «Data Parallel C++ for Cross-Architecture Applications» (en anglès). Intel. [Consulta: 7 octubre 2021].
* ↑ «Fix Performance Bottlenecks with Intel® VTune™ Profiler» (en anglès). Intel. [Consulta: 7 octubre 2021].
* ↑ «Codeplay Open Sources a Version of DPC++ for Nvidia GPUs» (en anglès americà). HPCwire, 05-02-2020. [Consulta: 12 febrer 2020].
* ↑ «Intel's oneAPI / DPC++ / SYCL Will Run Atop NVIDIA GPUs With Open-Source Layer - Phoronix» (en anglès). www.phoronix.com. [Consulta: 6 desembre 2019].
* ↑ «Codeplay - Codeplay contribution to DPC++ brings SYCL support for NVIDIA GPUs» (en anglès). www.codeplay.com. [Consulta: 11 febrer 2020].
* ↑ Salter, Jim. «Intel, Heidelberg University team up to bring Radeon GPU support to AI» (en anglès americà). Ars Technica, 30-09-2020. [Consulta: 7 octubre 2021].
* ↑ fltech. «A Deep Dive into a Deep Learning Library for the A64FX Fugaku CPU - The Development Story in the Developer's Own Words» (en japonès). fltech - 富士通研究所の技術ブログ. [Consulta: 10 febrer 2021].