OneAPI (OneAPI)
oneAPI | |
---|---|
Тип | Спецификация программного обеспечения с открытым исходным кодом, предназначенная для параллельных вычислений |
Операционная система | кроссплатформенная |
Аппаратная платформа | кроссплатформенная |
Последняя версия | (13 ноября 2020 ) |
Репозиторий | github.com/oneapi-src |
Сайт | oneapi.io (англ.) — официальный сайт OneAPI |
oneAPI — открытый стандарт унифицированного прикладного программного интерфейса, предназначенный для использования на различных вычислительных ускорительных архитектурах, включающих графические процессоры, нейронные процессоры и программируемые пользователем вентильные матрицы. Стандарт предназначен для устранения необходимости поддержания разработчиками отдельных кодовых баз, множества программных языков, и различных инструментов и рабочих процессов для каждой архитектуры[1][2][3][4].
Спецификация oneAPI
[править | править код]Спецификация oneAPI расширяет существующие модели программирования для разработчиков, позволяя использовать несколько аппаратных архитектур с помощью языка параллельных данных, набора библиотек API и низкоуровневого аппаратного интерфейса для поддержки межархитектурного программирования. Она построена на существующих промышленных стандартах и предоставляет открытый, кроссплатформенный стэк разработки.[5][6]
Data Parallel C++
[править | править код]DPC++[7][8] — открытый, кросс-архитектурный язык, созданный на базе языка C++ и SYCL стандартах промышленного консорциума Khronos Group.[9] DPC++ — имплементация стандарта SYCL с расширениями, предложенными для включения в будущие версии SYCL стандарта. Одним из примеров такого включения, является внесение использования унифицированной общей памяти, групповых алгоритмов и подгрупп в стандарт SYCL 2020.[10][11][12]
Библиотеки oneAPI
[править | править код]Набор API[5] охватывает несколько областей, в которых заметно преимущество от использования ускорения, включая библиотеки для линейной алгебры, глубокого обучения, машинного обучения, обработки видео, а также других областей.
Название библиотеки | Краткое
название |
Описание |
---|---|---|
oneAPI DPC++ Library | oneDPL | Алгоритмы и функции для ускорения программирования ядра DPC++ |
oneAPI Math Kernel Library | oneMKL | Математические подпрограммы, включающие линейную алгебру, быстрое преобразование Фурье, и векторную математику |
oneAPI Data Analytics Library | oneDAL | Функции для работы с машинным обучением и анализом данных |
oneAPI Deep Neural Network Library | oneDNN | Функции нейронных сетей для тренировки и использования глубокого обучения |
oneAPI Collective Communications Library | oneCCL | Шаблоны коммуникации для распределенного глубокого обучения |
oneAPI Threading Building Blocks | oneTBB | Библиотека шаблонов для управления потоками выполнения и памятью |
oneAPI Video Processing Library | oneVPL | Кодирование, декодирование, транскодирование, и обработка видео в реальном времени |
Исходный код большинства реализаций выше указанных библиотек доступен на сайте GitHub.[13]
В документации oneAPI также указан API "Нулевого уровня", определяющий низкоуровневые интерфейсы прямого доступа к железу и набор компонентов для трассировки лучей с собственными API интерфейсами.[5]
Уровень абстракции аппаратного обеспечения
[править | править код]oneAPI Level Zero,[14][15][16] — низкоуровневый аппаратный интерфейс, определяющий набор возможностей и служб, которые необходимы аппаратному ускорителю для взаимодействия со средами исполнения компилятора и другими инструментами разработчика.
Реализация
[править | править код]Компания Intel выпустила наборы инструментов oneAPI производственного качества, которые реализуют данную спецификацию и добавила миграцию кода CUDA, а также инструменты для анализа и отладки.[17][18][19] В состав этих инструментов входит Intel oneAPI DPC++/C++ Compiler,[20] Intel Fortran Compiler, Intel VTune Профайлер[21] и множество производительных библиотек.
Компания Codeplay выпустила слой с открытым исходным кодом[22][23][24], позволяющий библиотеке oneAPI SYCL/DPC++ работать на графических процессорах Nvidia с использованием CUDA.
Гейдельбергский университет разработал реализацию SYCL/DPC++ для графических процессоров AMD и Nvidia.[25]
Компания Huawei выпустила DPC++ компилятор для своего чипсета Ascend AI.[26]
Компания Fujitsu создала ARM версию библиотеки глубокой нейронной сети oneAPI (Deep Neural Network Library (oneDNN)) с открытым исходным кодом для процессора, использующегося в суперкомпьютере [27] Fugaku.
Примечания
[править | править код]- ↑ Intel Expands its Silicon Portfolio, and oneAPI Software Initiative for Next-Generation HPC (амер. англ.). HPCwire (9 декабря 2019). Дата обращения: 11 февраля 2020. Архивировано 25 сентября 2020 года.
- ↑ Intel Debuts New GPU – Ponte Vecchio – and Outlines Aspirations for oneAPI (амер. англ.). HPCwire (18 ноября 2019). Дата обращения: 11 февраля 2020. Архивировано 4 марта 2020 года.
- ↑ SC19: Intel Unveils New GPU Stack, oneAPI Development Effort - ExtremeTech . www.extremetech.com. Дата обращения: 11 февраля 2020. Архивировано 20 ноября 2019 года.
- ↑ Kennedy, Patrick Intel One API to Rule Them All Is Much Needed to Expand TAM (амер. англ.). ServeTheHome (24 декабря 2018). Дата обращения: 11 февраля 2020. Архивировано 24 ноября 2019 года.
- ↑ 1 2 3 oneAPI Specification . oneAPI. Архивировано 11 марта 2023 года.
- ↑ Preparing for the Arrival of Intel's Discrete High-Performance GPUs (амер. англ.). HPCwire (23 марта 2021). Дата обращения: 29 марта 2021. Архивировано 30 марта 2021 года.
- ↑ Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems Using C++ and SYCL . Apress. Архивировано 11 марта 2023 года.
- ↑ Team, Editorial Heterogeneous Computing Programming: oneAPI and Data Parallel C++ (амер. англ.). insideBIGDATA (16 декабря 2019). Дата обращения: 11 февраля 2020. Архивировано 25 апреля 2020 года.
- ↑ The Khronos Group (англ.). The Khronos Group (11 февраля 2020). Дата обращения: 11 февраля 2020. Архивировано 28 сентября 2020 года.
- ↑ Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification (англ.). The Khronos Group (30 июня 2020). Дата обращения: 6 июля 2020. Архивировано 7 июля 2020 года.
- ↑ staff New, Open DPC++ Extensions Complement SYCL and C++ (амер. англ.). insideHPC (30 июня 2020). Дата обращения: 6 июля 2020. Архивировано 6 июля 2020 года.
- ↑ SYCL 2020 Launches with New Name, New Features, and High Ambition (амер. англ.). HPCwire (9 февраля 2021). Дата обращения: 16 февраля 2021. Архивировано 14 февраля 2021 года.
- ↑ oneAPI-SRC (англ.). GitHub. Дата обращения: 11 марта 2023. Архивировано 11 марта 2023 года.
- ↑ Verheyde 2019-12-08T16:11:19Z, Arne Intel Releases Bare-Metal oneAPI Level Zero Specification (англ.). Tom's Hardware. Дата обращения: 11 февраля 2020.
- ↑ Intel's Compute Runtime Adds oneAPI Level Zero Support - Phoronix . www.phoronix.com. Дата обращения: 10 марта 2020. Архивировано 29 сентября 2020 года.
- ↑ Initial Benchmarks With Intel oneAPI Level Zero Performance - Phoronix . www.phoronix.com. Дата обращения: 13 апреля 2020. Архивировано 12 апреля 2020 года.
- ↑ "Intel Champions XPU Vision With oneAPI, Data Center GPUs - SDxCentral". SDxCentral (англ.). 2020-11-11. Архивировано 17 января 2021. Дата обращения: 11 марта 2023.
- ↑ Intel Debuts oneAPI Gold and Provides More Details on GPU Roadmap (амер. англ.). HPCwire (11 ноября 2020). Дата обращения: 11 ноября 2020. Архивировано 11 ноября 2020 года.
- ↑ Moorhead, Patrick Intel Announces Gold Release Of OneAPI Toolkits And New Intel Server GPU (англ.). Forbes. Дата обращения: 8 декабря 2020. Архивировано 3 декабря 2020 года.
- ↑ Data Parallel C++ for Cross-Architecture Applications (англ.). Intel. Дата обращения: 7 октября 2021.
- ↑ Fix Performance Bottlenecks with Intel® VTune™ Profiler (англ.). Intel. Дата обращения: 7 октября 2021.
- ↑ Codeplay Open Sources a Version of DPC++ for Nvidia GPUs (амер. англ.). HPCwire (5 февраля 2020). Дата обращения: 12 февраля 2020. Архивировано 6 февраля 2020 года.
- ↑ Intel's oneAPI / DPC++ / SYCL Will Run Atop NVIDIA GPUs With Open-Source Layer - Phoronix . www.phoronix.com. Дата обращения: 6 декабря 2019. Архивировано 18 декабря 2019 года.
- ↑ Codeplay - Codeplay contribution to DPC++ brings SYCL support for NVIDIA GPUs . www.codeplay.com. Дата обращения: 11 февраля 2020. Архивировано 5 февраля 2020 года.
- ↑ Salter, Jim Intel, Heidelberg University team up to bring Radeon GPU support to AI (амер. англ.). Ars Technica (30 сентября 2020). Дата обращения: 7 октября 2021. Архивировано 7 октября 2021 года.
- ↑ Extending DPC++ with Support for Huawei Ascend AI Chipset (англ.), Архивировано 7 октября 2021, Дата обращения: 7 октября 2021
- ↑ fltech A Deep Dive into a Deep Learning Library for the A64FX Fugaku CPU - The Development Story in the Developer's Own Words (яп.). fltech - 富士通研究所の技術ブログ. Дата обращения: 10 февраля 2021. Архивировано 6 марта 2021 года.
Ссылки
[править | править код]- oneapi.io (англ.) — официальный сайт OneAPI
- Intel oneAPI Product
- Bringing Nvidia GPU support to SYCL developers
- Reinders, James. Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL / James Reinders, Ben Ashbaugh, James Brodman … [и др.]. — Springer, 2021. — ISBN 978-1-4842-5574-2. — doi:10.1007/978-1-4842-5574-2.
- Проект OneAPI на сайте GitHub