OneAPI (OneAPI)

Перейти к навигации Перейти к поиску
oneAPI
Тип Спецификация программного обеспечения с открытым исходным кодом, предназначенная для параллельных вычислений
Операционная система кроссплатформенная
Аппаратная платформа кроссплатформенная
Последняя версия (13 ноября 2020; 4 года назад (2020-11-13))
Репозиторий github.com/oneapi-src
Сайт oneapi.io (англ.) — официальный сайт OneAPI

oneAPI — открытый стандарт унифицированного прикладного программного интерфейса, предназначенный для использования на различных вычислительных ускорительных архитектурах, включающих графические процессоры, нейронные процессоры и программируемые пользователем вентильные матрицы. Стандарт предназначен для устранения необходимости поддержания разработчиками отдельных кодовых баз, множества программных языков, и различных инструментов и рабочих процессов для каждой архитектуры[1][2][3][4].

Спецификация oneAPI

[править | править код]

Спецификация oneAPI расширяет существующие модели программирования для разработчиков, позволяя использовать несколько аппаратных архитектур с помощью языка параллельных данных, набора библиотек API и низкоуровневого аппаратного интерфейса для поддержки межархитектурного программирования. Она построена на существующих промышленных стандартах и предоставляет открытый, кроссплатформенный стэк разработки.[5][6]

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.

Примечания

[править | править код]
  1. Intel Expands its Silicon Portfolio, and oneAPI Software Initiative for Next-Generation HPC (амер. англ.). HPCwire (9 декабря 2019). Дата обращения: 11 февраля 2020. Архивировано 25 сентября 2020 года.
  2. Intel Debuts New GPU – Ponte Vecchio – and Outlines Aspirations for oneAPI (амер. англ.). HPCwire (18 ноября 2019). Дата обращения: 11 февраля 2020. Архивировано 4 марта 2020 года.
  3. SC19: Intel Unveils New GPU Stack, oneAPI Development Effort - ExtremeTech. www.extremetech.com. Дата обращения: 11 февраля 2020. Архивировано 20 ноября 2019 года.
  4. Kennedy, Patrick Intel One API to Rule Them All Is Much Needed to Expand TAM (амер. англ.). ServeTheHome (24 декабря 2018). Дата обращения: 11 февраля 2020. Архивировано 24 ноября 2019 года.
  5. 1 2 3 oneAPI Specification. oneAPI. Архивировано 11 марта 2023 года.
  6. Preparing for the Arrival of Intel's Discrete High-Performance GPUs (амер. англ.). HPCwire (23 марта 2021). Дата обращения: 29 марта 2021. Архивировано 30 марта 2021 года.
  7. Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems Using C++ and SYCL. Apress. Архивировано 11 марта 2023 года.
  8. Team, Editorial Heterogeneous Computing Programming: oneAPI and Data Parallel C++ (амер. англ.). insideBIGDATA (16 декабря 2019). Дата обращения: 11 февраля 2020. Архивировано 25 апреля 2020 года.
  9. The Khronos Group (англ.). The Khronos Group (11 февраля 2020). Дата обращения: 11 февраля 2020. Архивировано 28 сентября 2020 года.
  10. Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification (англ.). The Khronos Group (30 июня 2020). Дата обращения: 6 июля 2020. Архивировано 7 июля 2020 года.
  11. staff New, Open DPC++ Extensions Complement SYCL and C++ (амер. англ.). insideHPC (30 июня 2020). Дата обращения: 6 июля 2020. Архивировано 6 июля 2020 года.
  12. SYCL 2020 Launches with New Name, New Features, and High Ambition (амер. англ.). HPCwire (9 февраля 2021). Дата обращения: 16 февраля 2021. Архивировано 14 февраля 2021 года.
  13. oneAPI-SRC (англ.). GitHub. Дата обращения: 11 марта 2023. Архивировано 11 марта 2023 года.
  14. Verheyde 2019-12-08T16:11:19Z, Arne Intel Releases Bare-Metal oneAPI Level Zero Specification (англ.). Tom's Hardware. Дата обращения: 11 февраля 2020.
  15. Intel's Compute Runtime Adds oneAPI Level Zero Support - Phoronix. www.phoronix.com. Дата обращения: 10 марта 2020. Архивировано 29 сентября 2020 года.
  16. Initial Benchmarks With Intel oneAPI Level Zero Performance - Phoronix. www.phoronix.com. Дата обращения: 13 апреля 2020. Архивировано 12 апреля 2020 года.
  17. "Intel Champions XPU Vision With oneAPI, Data Center GPUs - SDxCentral". SDxCentral (англ.). 2020-11-11. Архивировано 17 января 2021. Дата обращения: 11 марта 2023.
  18. Intel Debuts oneAPI Gold and Provides More Details on GPU Roadmap (амер. англ.). HPCwire (11 ноября 2020). Дата обращения: 11 ноября 2020. Архивировано 11 ноября 2020 года.
  19. Moorhead, Patrick Intel Announces Gold Release Of OneAPI Toolkits And New Intel Server GPU (англ.). Forbes. Дата обращения: 8 декабря 2020. Архивировано 3 декабря 2020 года.
  20. Data Parallel C++ for Cross-Architecture Applications (англ.). Intel. Дата обращения: 7 октября 2021.
  21. Fix Performance Bottlenecks with Intel® VTune™ Profiler (англ.). Intel. Дата обращения: 7 октября 2021.
  22. Codeplay Open Sources a Version of DPC++ for Nvidia GPUs (амер. англ.). HPCwire (5 февраля 2020). Дата обращения: 12 февраля 2020. Архивировано 6 февраля 2020 года.
  23. Intel's oneAPI / DPC++ / SYCL Will Run Atop NVIDIA GPUs With Open-Source Layer - Phoronix. www.phoronix.com. Дата обращения: 6 декабря 2019. Архивировано 18 декабря 2019 года.
  24. Codeplay - Codeplay contribution to DPC++ brings SYCL support for NVIDIA GPUs. www.codeplay.com. Дата обращения: 11 февраля 2020. Архивировано 5 февраля 2020 года.
  25. Salter, Jim Intel, Heidelberg University team up to bring Radeon GPU support to AI (амер. англ.). Ars Technica (30 сентября 2020). Дата обращения: 7 октября 2021. Архивировано 7 октября 2021 года.
  26. Extending DPC++ with Support for Huawei Ascend AI Chipset (англ.), Архивировано 7 октября 2021, Дата обращения: 7 октября 2021
  27. 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 года.