oneAPI - это открытый стандарт унифицированного интерфейса прикладного программирования, предназначенный для использования в различных архитектурах вычислительных ускорителей ( сопроцессоров ). Он призван избавить разработчиков от необходимости поддерживать отдельные базы кода, несколько языков программирования и разные инструменты и рабочие процессы для каждой архитектуры. [1] [2] [3] [4]
Репозиторий | github |
---|---|
Операционная система | Кроссплатформенность |
Платформа | Кроссплатформенность |
Тип | Спецификация программного обеспечения с открытым исходным кодом для параллельного программирования |
Веб-сайт | www |
Спецификация oneAPI
Спецификация oneAPI расширяет существующие модели программирования для разработчиков, позволяя использовать несколько аппаратных архитектур с помощью языка параллельных данных, набора библиотечных API-интерфейсов и низкоуровневого аппаратного интерфейса для поддержки кросс-архитектурного программирования. Он основан на отраслевых стандартах и предоставляет открытый кроссплатформенный стек разработчика. [5] [6]
Параллельные данные C ++
DPC ++ [7] [8] - это открытый кросс-архитектурный язык, построенный на стандартах ISO C ++ и SYCL Khronos Group . [9] DPC ++ расширяет эти стандарты за счет явных параллельных конструкций, таких как подгруппы и унифицированные интерфейсы разгрузки разделяемой памяти, для поддержки широкого спектра вычислительных архитектур и процессоров, включая процессоры и ускорители. Расширения возвращаются в органы стандартизации. Примером этого является вклад объединенной разделяемой памяти, групповых алгоритмов и подгрупп в SYCL 2020. [10] [11] [12]
библиотеки oneAPI
Набор API [13] охватывает несколько областей, которые выигрывают от ускорения, включая интерфейс для глубокого обучения; общие библиотеки для математики линейной алгебры, обработки видео и мультимедиа; и другие.
Имя библиотеки | короткий Имя | Описание |
---|---|---|
Библиотека oneAPI DPC ++ | oneDPL | Алгоритмы и функции для ускорения программирования ядра DPC ++ |
Библиотека ядра oneAPI Math | oneMKL | Математические процедуры, включая матричную алгебру, БПФ и векторную математику |
Библиотека аналитики данных oneAPI | oneDAL | Функции машинного обучения и анализа данных |
Библиотека глубокой нейронной сети oneAPI | oneDNN | Функции нейронных сетей для обучения глубокому обучению и вывода |
Библиотека коллективных коммуникаций oneAPI | oneCCL | Коммуникационные шаблоны для распределенного глубокого обучения |
Строительные блоки oneAPI Threading | один ТББ | Библиотека шаблонов потоковой передачи и управления памятью |
Библиотека обработки видео oneAPI | oneVPL | Кодирование, декодирование, перекодирование и обработка видео в реальном времени |
Исходный код некоторых реализаций указанных выше библиотек доступен на GitHub. [14] Обратите внимание, что некоторые библиотеки являются просто связующим кодом между интерфейсом oneAPI DPC ++ и некоторой другой библиотекой. Например, «библиотека ядра oneAPI Math с открытым исходным кодом» для работы полагается на фактические реализации BLAS, одной из которых является сбивающая с толку «библиотека ядра Intel oneAPI Math с закрытым исходным кодом», более известная как Inter MKL. [15]
Уровень аппаратной абстракции
oneAPI Level Zero, [16] [17] [18] низкоуровневый аппаратный интерфейс, определяет набор возможностей и сервисов, необходимых аппаратному ускорителю для взаимодействия со средами выполнения компилятора и другими инструментами разработчика.
Реализации
Корпорация Intel выпустила качественные производственные наборы инструментов oneAPI, которые реализуют спецификацию и добавляют инструменты миграции, анализа и отладки. [19] [20] [21] Они включают в компилятор Intel C ++ , Intel Fortran компилятор , VTune и несколько библиотек производительности.
Codeplay выпустил уровень с открытым исходным кодом [22] [23] [24], позволяющий запускать oneAPI и SYCL / Data Parallel C ++ на графических процессорах Nvidia через CUDA .
Fujitsu создала ARM- версию библиотеки oneAPI Deep Neural Network Library (oneDNN) [25] с открытым исходным кодом для своего процессора Fugaku.
Рекомендации
- ^ «Intel расширяет свой кремниевый портфель и инициативу по программному обеспечению oneAPI для высокопроизводительных вычислений нового поколения» . HPCwire . 2019-12-09 . Проверено 11 февраля 2020 .
- ^ «Intel представляет новый графический процессор - Ponte Vecchio - и обрисовывает в общих чертах планы на использование oneAPI» . HPCwire . 2019-11-18 . Проверено 11 февраля 2020 .
- ^ «SC19: Intel представляет новый стек графических процессоров, усилия по разработке oneAPI - ExtremeTech» . www.extremetech.com . Проверено 11 февраля 2020 .
- ^ Кеннеди, Патрик (24 декабря 2018 г.). «Intel One API для управления всем очень необходим для расширения возможностей TAM» . ServeTheHome . Проверено 11 февраля 2020 .
- ^ «Спецификация oneAPI» . oneAPI .
- ^ «Подготовка к выпуску дискретных высокопроизводительных графических процессоров Intel» . HPCwire . 2021-03-23 . Проверено 29 марта 2021 .
- ^ «Параллельные данные C ++: освоение DPC ++ для программирования гетерогенных систем с использованием C ++ и SYCL» . Апресс .
- ^ Команда, редакция (2019-12-16). «Программирование гетерогенных вычислений: oneAPI и Data Parallel C ++» . внутриBIGDATA . Проверено 11 февраля 2020 .
- ^ «Группа Хронос» . Группа Хронос . 2020-02-11 . Проверено 11 февраля 2020 .
- ^ «Шаги Khronos к повсеместному развертыванию SYCL с выпуском предварительной спецификации SYCL 2020» . Группа Хронос . 2020-06-30 . Проверено 6 июля 2020 .
- ^ персонал (30.06.2020). «Новые, открытые расширения DPC ++, дополняющие SYCL и C ++» . внутриHPC . Проверено 6 июля 2020 .
- ^ «SYCL 2020 запускается с новым названием, новыми функциями и высокими амбициями» . HPCwire . 2021-02-09 . Проверено 16 февраля 2021 .
- ^ «элементы спецификации oneAPI» . oneAPI .
- ^ «oneAPI-SRC» . GitHub .
- ^ "oneapi-src / oneMKL" . oneAPI-SRC. 19 марта 2021
г. Интерфейсы oneMKL - это реализация интерфейса oneMKL Data Parallel C ++ (DPC ++) с открытым исходным кодом в соответствии со спецификацией oneMKL. Он работает с несколькими устройствами (бэкэндами), используя библиотеки для конкретных устройств внизу.
- ^ Верхейде 2019-12-08T16: 11: 19Z, Арне. «Intel выпускает спецификацию Bare-Metal oneAPI Level Zero» . Оборудование Тома . Проверено 11 февраля 2020 .
- ^ «Среда выполнения вычислений Intel добавляет поддержку нулевого уровня API - Phoronix» . www.phoronix.com . Проверено 10 марта 2020 .
- ^ «Начальные тесты производительности Intel oneAPI Level Zero - Phoronix» . www.phoronix.com . Проверено 13 апреля 2020 .
- ^ «Intel Champions XPU Vision с oneAPI, графические процессоры для центров обработки данных - SDxCentral» . SDxCentral . 2020-11-11 . Проверено 11 ноября 2020 .
- ^ «Intel представляет oneAPI Gold и предоставляет более подробную информацию о планах развития графических процессоров» . HPCwire . 2020-11-11 . Проверено 11 ноября 2020 .
- ^ Мурхед, Патрик. «Intel объявляет о выпуске Gold Release наборов инструментов OneAPI и нового серверного графического процессора Intel» . Forbes . Проверено 8 декабря 2020 .
- ^ «Codeplay Open Sources - версия DPC ++ для графических процессоров Nvidia» . HPCwire . 2020-02-05 . Проверено 12 февраля 2020 .
- ^ «Intel oneAPI / DPC ++ / SYCL будет работать на графических процессорах NVIDIA с открытым исходным кодом - Phoronix» . www.phoronix.com . Проверено 6 декабря 2019 .
- ^ «Codeplay - вклад Codeplay в DPC ++ обеспечивает поддержку SYCL для графических процессоров NVIDIA» . www.codeplay.com . Проверено 11 февраля 2020 .
- ^ fltech. «Глубокое погружение в библиотеку глубокого обучения для процессора A64FX Fugaku - история разработки собственными словами разработчика» . fltech - 富士 通 研究所 の 技術 ブ ロ グ(на японском языке) . Проверено 10 февраля 2021 .
Внешние ссылки
- Спецификация отрасли oneAPI
- Продукт Intel oneAPI
- Обеспечение поддержки графических процессоров Nvidia для разработчиков SYCL
- Джеймс Рейндерс и др.: «Параллельные данные C ++: освоение DPC ++ для программирования гетерогенных систем с использованием C ++ и SYCL», Springer, ISBN 978-1-4842-5574-2 (книга открытого доступа)