Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с предметом , что потенциально может помешать проверке и нейтральности статьи . ( Январь 2019 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Автор (ы) оригинала | Группа Хронос |
---|---|
Разработчики) | Группа Хронос |
изначальный выпуск | Март 2014 г. |
Стабильный выпуск | Редакция 2 от 2020 г. / 9 февраля 2021 г . |
Операционная система | Кроссплатформенность |
Платформа | Кроссплатформенность |
Тип | Язык программирования высокого уровня |
Интернет сайт | www |
SYCL - это модель программирования более высокого уровня для повышения производительности программирования на различных аппаратных ускорителях . Это встраиваемый язык с одним исходным доменом ( DSEL ), основанный на чистом C ++ 17 . Это стандарт, разработанный Khronos Group , анонсированный в марте 2014 года.
Происхождение имени [ править ]
SYCL (произносится как «серп») - это имя, а не аббревиатура . В частности, разработчики SYCL дали понять, что в названии нет ссылки на OpenCL . [1]
Цель [ править ]
SYCL - это бесплатный кроссплатформенный уровень абстракции, основанный на базовых концепциях, переносимости и эффективности, вдохновленных OpenCL, который позволяет писать код для гетерогенных процессоров в стиле «одного источника» с использованием полностью стандартного C ++ . SYCL обеспечивает разработку из одного источника, где функции шаблона C ++ могут содержать код как хоста, так и устройства для создания сложных алгоритмов, использующих аппаратные ускорители , а затем повторно использовать их во всем исходном коде для различных типов данных.
Хотя стандарт SYCL начался как подгруппа модели программирования более высокого уровня рабочей группы OpenCL и изначально был разработан для использования с OpenCL и SPIR , SYCL является рабочей группой Khronos Group, независимой от рабочей группы OpenCL с 20 сентября 2019 г. с SYCL 2020 SYCL был обобщен как более общая гетерогенная структура, способная работать с другими системами. Теперь это возможно с концепцией универсального бэкэнда, предназначенного для любого API ускорения , обеспечивая при этом полную совместимость с целевым API., например, использование существующих нативных библиотек для достижения максимальной производительности при упрощении программирования. Например, реализация hipSYCL нацелена на ROCm и CUDA через межпроизводственный HIP AMD .
Версии [ править ]
Последней версией является версия 2 SYCL 2020, которая была опубликована 9 февраля 2021 г. [2] с учетом отзывов пользователей и разработчиков о версии 1 предварительной спецификации SYCL 2020, опубликованной 30 июня 2020 г. [3]
Последней версией предыдущей серии SYCL 1.2.1 является SYCL 1.2.1 версии 7, которая была опубликована 27 апреля 2020 г. (первая версия была опубликована 6 декабря 2017 г. [4] ).
SYCL был представлен на GDC в марте 2014 года с предварительной версией 1.2, [5] затем окончательная версия SYCL 1.2 была представлена на IWOCL 2015 в мае 2015 года [6].
Предварительная версия SYCL 2.2 была представлена на IWOCL 2016 в мае 2016 года [7], нацеленная на C ++ 14 и OpenCL 2.2. Но комитет SYCL предпочел не доработать эту версию и перейти к более гибкой спецификации SYCL, чтобы удовлетворить растущее разнообразие текущих аппаратных ускорителей , включая механизмы искусственного интеллекта , что привело к SYCL 2020.
Учебники [ править ]
В руководствах ComputeCpp SYCL есть несколько руководств. [8]
Лицензия [ править ]
Исходные файлы для создания спецификации, такие как Makefiles и некоторые сценарии, заголовки SYCL и образцы кода SYCL, находятся под лицензией Apache 2.0. [9] Подробная информация о лицензии: https://www.apache.org/licenses/LICENSE-2.0.html.
Сравнение с другими API [ править ]
Открытые стандарты SYCL и OpenCL аналогичны CUDA от Nvidia для конкретных поставщиков .
В Хронос Group области, OpenCL и Vulkan являются низкого уровня , не единственный источник API , и SYCL является высокого уровня одного источника C ++ , предметно-ориентированный встроенный язык .
Для сравнения, версия CUDA с одним исходным кодом для предметно-ориентированного встроенного языка C ++ , которая на самом деле называется CUDA Runtime API , чем-то похожа на SYCL. Но на самом деле существует менее известная версия CUDA без единого источника, которая называется « CUDA Driver API », похожая на OpenCL , и используется, например, самой реализацией CUDA Runtime API .
SYCL расширяет возможности C ++ AMP, освобождая программиста от явной передачи данных между хостом и устройствами с использованием буферов и средств доступа , в отличие от CUDA (до введения унифицированной памяти в CUDA 6). Но, начиная с SYCL 2020, также можно использовать USM вместо буферов и средств доступа, чтобы использовать модель программирования нижнего уровня, аналогичную унифицированной памяти в CUDA .
SYCL является более высокоуровневым, чем C ++ AMP и CUDA, поскольку вам не нужно строить явный граф зависимостей между всеми ядрами и обеспечивает автоматическое асинхронное планирование ядер с перекрытием связи и вычислений. Все это делается с помощью концепции аксессоров, не требуя поддержки компилятора.
В отличие от C ++ AMP и CUDA , SYCL - это чистый C ++ DSEL без какого-либо расширения C ++ , что позволяет использовать некоторую базовую реализацию ЦП, полагающуюся на чистую среду выполнения без какого-либо конкретного компилятора. Это очень полезно для отладки приложения или для создания прототипа новой архитектуры, когда архитектура и компилятор еще не доступны.
Реализация hipSYCL добавляет программирование более высокого уровня SYCL к CUDA и HIP .
SYCL имеет много общего с Kokkos модели программирования, [10] , включая использование непрозрачных многомерных объектов массива (SYCL буферов и Kokkos массивов), многомерные диапазоны для параллельного выполнения, а также снижения (добавлено в SYCL 2020). Многочисленные функции в SYCL 2020 были добавлены в ответ на отзывы сообщества Kokkos.
См. Также [ править ]
- C ++
- C ++ AMP
- CUDA
- Металл
- OpenACC
- OpenCL
- OpenMP
- SPIR
- Вулкан
Ссылки [ править ]
- ^ Кериелл, Ронан. «Значение SYCL» . GitHub . Проверено 5 февраля 2021 года .
- ↑ Khronos Group (9 февраля 2021 г.). «Khronos выпускает спецификацию SYCL 2020» . Хронос . Проверено 22 февраля 2021 года .
- ↑ Khronos Group (30 июня 2020 г.). «Шаги Khronos к повсеместному развертыванию SYCL с выпуском предварительной спецификации SYCL 2020» . Хронос . Дата обращения 4 декабря 2020 .
- ↑ Khronos Group (6 декабря 2017 г.). «Группа Khronos выпускает окончательный вариант SYCL 1.2.1» . Хронос . Проверено 12 декабря 2017 года .
- ↑ Khronos Group (19 марта 2014 г.). «Khronos выпускает предварительную спецификацию SYCL 1.2» . Хронос . Проверено 20 августа 2017 года .
- ↑ Khronos Group (11 мая 2015 г.). «Khronos выпускает окончательную спецификацию SYCL 1.2» . Хронос . Проверено 20 августа 2017 года .
- ↑ Khronos Group (18 апреля 2016 г.). «Khronos выпускает предварительную спецификацию OpenCL 2.2 с языком ядра OpenCL C ++» . Хронос . Проверено 18 сентября 2017 года .
- ^ «Введение в программирование GPGPU с помощью SYCL» . Codeplay . Проверено 3 октября 2017 года .
- ^ https://github.com/KhronosGroup/SYCL-Docs/blob/SYCL-1.2.1/master/LICENSE.txt . Отсутствует или пусто
|title=
( справка ) - ^ Хаммонд, Джефф Р .; Кинснер, Майкл; Бродман, Джеймс (2019). «Сравнительный анализ Kokkos и SYCL как гетерогенных моделей параллельного программирования для приложений C ++» . Материалы международного семинара по OpenCL : 1–2. DOI : 10.1145 / 3318170.3318193 .
Внешние ссылки [ править ]
- Веб-страница Khronos SYCL
- Спецификации SYCL в реестре Khronos
- C ++ 17 ParallelSTL в SYCL
- Технические ресурсы SYCL
- Реализация Codeplay ComputeCpp SYCL
- Внедрение SYCL, начатое Intel, с целью апстриминга Clang / LLVM
- hipSYCL: реализация SYCL 1.2.1 поверх AMD HIP / NVIDIA CUDA
- Реализация SYCL с открытым исходным кодом triSYCL
- Конференция SYCL @ IWOCL
- «SYCL 2020 запускается с новым названием, новыми функциями и высокими амбициями», статья HPCWire (9 февраля 2021 г.)