SYCL

Стандарт программирования более высокого уровня для гетерогенных вычислений
SYCL
Оригинальный автор(ы)Группа компаний «Хронос»
Разработчик(и)Группа компаний «Хронос»
Первоначальный выпускМарт 2014 ; 10 лет назад ( 2014-03 )
Стабильный релиз
2020 пересмотр 8 (1.2.1) / 19 октября 2023 г. ; 15 месяцев назад [1] ( 2023-10-19 )
Операционная системаКроссплатформенный
ПлатформаКроссплатформенный
ТипЯзык программирования высокого уровня
Веб-сайтwww.khronos.org/sycl/sycl.tech

SYCL (произносится как «серп») — это модель программирования более высокого уровня для повышения производительности программирования на различных аппаратных ускорителях . Это встроенный доменно-ориентированный язык с одним источником ( eDSL ), основанный на чистом C++17 . Это стандарт, разработанный Khronos Group , анонсированный в марте 2014 года.

Происхождение названия

SYCL (произносится как «серп») изначально расшифровывалось как SY stem-wide Computer Language [ 2] , но с 2020 года разработчики SYCL заявили, что SYCL — это название, и дали ясно понять, что оно больше не является аббревиатурой и не содержит ссылок на OpenCL . [3]

Цель

SYCL — это бесплатный кроссплатформенный уровень абстракции, который строится на базовых концепциях, переносимости и эффективности, вдохновленных OpenCL , что позволяет писать код для гетерогенных процессоров в стиле «из одного источника» с использованием полностью стандартного C++ . SYCL обеспечивает разработку из одного источника, где функции шаблонов C++ могут содержать как код хоста, так и код устройства для построения сложных алгоритмов, использующих аппаратные ускорители , а затем повторно использовать их в исходном коде для различных типов данных.

В то время как стандарт SYCL начинался как подгруппа высокоуровневой модели программирования рабочей группы OpenCL и изначально разрабатывался для использования с OpenCL и SPIR , SYCL является рабочей группой Khronos Group, независимой от рабочей группы OpenCL с 20 сентября 2019 года, и начиная с SYCL 2020, SYCL был обобщен как более общая гетерогенная структура, способная ориентироваться на другие системы. Теперь это возможно с концепцией универсального бэкэнда для ориентации на любой API ускорения , обеспечивая при этом полную совместимость с целевым API , например, использование существующих собственных библиотек для достижения максимальной производительности наряду с упрощением усилий по программированию. Например, реализация Open SYCL нацелена на ROCm и CUDA через кросс-вендорный HIP AMD .

Версии

SYCL был представлен на GDC в марте 2014 года с предварительной версией 1.2, [4] затем окончательная версия SYCL 1.2 была представлена ​​на IWOCL 2015 в мае 2015 года. [5]

Последняя версия предыдущей серии SYCL 1.2.1 — это SYCL 1.2.1 revision 7, опубликованная 27 апреля 2020 года (первая версия была опубликована 6 декабря 2017 года [6] ).

SYCL 2.2 предварительный был представлен на IWOCL 2016 в мае 2016 года [7] с ориентацией на C++14 и OpenCL 2.2. Но комитет SYCL предпочел не финализировать эту версию и перейти к более гибкой спецификации SYCL для решения растущего разнообразия современных аппаратных ускорителей , включая движки искусственного интеллекта , что привело к SYCL 2020.

Последняя версия — SYCL 2020 revision 6, опубликованная 13 ноября 2022 года, представляющая собой эволюцию первого выпуска revision 2, опубликованного 9 февраля 2021 года, [8] с учетом отзывов пользователей и разработчиков на SYCL 2020 Provisional Specification revision 1, опубликованном 30 июня 2020 года. [9] Поддержка C++17 и OpenCL 3.0 является основными целями этого выпуска. Унифицированная общая память (USM) является одной из основных функций для графических процессоров с поддержкой OpenCL и CUDA.

На IWOCL 2021 была представлена ​​дорожная карта. DPC++, ComputeCpp, Open SYCL, triSYCL и neoSYCL являются основными реализациями SYCL. Следующая цель в разработке — поддержка C++20 в будущем SYCL 202x. [10]

Реализации

  • Data Parallel C++ (DPC++): проект Intel с открытым исходным кодом , призванный представить SYCL для LLVM и oneAPI . C++17 и части C++20 с SYCL 2020 являются основой этой структуры компилятора. [11] [12]
  • ComputeCpp: фреймворк, совместимый с SYCL 1.2.1, фирмы Codeplay с версией сообщества. [13] [14] Теперь устарел в пользу DPC++. [15]
  • AdaptiveCpp (ранее hipSYCL и Open SYCL): неполная поддержка 1.2.1 без изображений или взаимодействия с OpenCL; частично SYCL 2020. [16] Поддерживает AMD (ROCm), Nvidia (CUDA), Intel (Level Zero через SPIR-V) и CPU (LLVM + OpenMP). [17] Может создавать полностью универсальные двоичные файлы с использованием исполняемой среды just-in-time. Поддерживает стандартный параллелизм C++ ( std::execution) в дополнение к SYCL. [18]
  • triSYCL: основан на C++20, OpenMP и OpenCL, медленная разработка, неполный, есть версия, основанная на DPC++ [19]
  • neoSYCL: SYCL 1.2.1 почти завершен, для HPC SX-Aurora Tsubasa, нет специфических функций OpenCL, таких как поддержка изображений [20] [21]
  • SYCL-gtx: поддержка C++11 для OpenCL 1.2+, далека от завершения, фактическая разработка отсутствует [22]
  • Sylkan — это реализация SYCL для устройств Vulkan в экспериментальном состоянии. [23]
  • У Polygeist есть форк, компилирующий SYCL через MLIR [24] , который поддерживается компанией Inteon. [25]

Расширения

Безопасность SYCL критически важна

В марте 2023 года Khronos Group объявила о создании рабочей группы SYCL SC [26] с целью создания высокоуровневой гетерогенной вычислительной среды для систем, критически важных для безопасности . Эти системы охватывают различные области, включая авионику, автомобилестроение, промышленность и медицину.

Фреймворк SYCL Safety Critical будет соответствовать нескольким отраслевым стандартам для обеспечения его надежности и безопасности. Эти стандарты включают MISRA C++ 202X, [27] который предоставляет рекомендации по использованию C++ в критических системах, RTCA DO-178C / EASA ED-12C, [28] которые являются стандартами для рассмотрения программного обеспечения в бортовых системах и сертификации оборудования, ISO 26262/21448, [29] который относится к функциональной безопасности дорожных транспортных средств, IEC 61508 , который охватывает функциональную безопасность электрических/электронных/программируемых электронных систем, связанных с безопасностью, и IEC 62304 , который относится к требованиям жизненного цикла для программного обеспечения медицинских устройств. [26]

Программное обеспечение

Вот некоторые известные области программного обеспечения, в которых используется SYCL (с примерами):

  • Биоинформатика
    • GROMACS : Программное обеспечение для молекулярной динамики , широко используемое в биоинформатике и вычислительной химии. Начиная с ускоренной версии в 2021 году, GROMACS использует SYCL 2020 для эффективных вычислений на различных аппаратных ускорителях. [30]
    • LiGen: программное обеспечение для молекулярной стыковки , которое использует SYCL для ускорения вычислительных задач, связанных с анализом молекулярной структуры и моделированием стыковки. [31]
    • Autodock : еще одно программное обеспечение для молекулярной стыковки, которое использует SYCL для ускорения процесса прогнозирования того, как малые молекулы связываются с рецептором известной трехмерной структуры. [32]
  • Искусственный интеллект
  • Автомобильная промышленность
    • ISO 26262 : Международный стандарт функциональной безопасности автомобильных электрических и электронных систем. SYCL используется в автомобильных приложениях для ускорения критически важных для безопасности вычислений и моделирования, обеспечивая соответствие строгим стандартам безопасности. [34]
  • Космология
    • CRK-HACC: Код космологического моделирования n-тел, который был перенесен в SYCL. Он использует SYCL для ускорения вычислений, связанных с крупномасштабным формированием структур и динамикой во Вселенной. [35]

Ресурсы

Khronos Ведет список ресурсов SYCL. [36] Codeplay Software также предоставляет учебные пособия на сайте sycl.tech вместе с другой информацией и новостями об экосистеме SYCL.

Лицензия

Исходные файлы для построения спецификации, такие как Makefiles и некоторые скрипты, заголовки SYCL и примеры кода SYCL находятся под лицензией Apache 2.0 . [37]

Сравнение с другими инструментами

Открытые стандарты SYCL и OpenCL аналогичны моделям программирования фирменного стека CUDA от Nvidia и HIP из открытого стека ROCm , поддерживаемого AMD . [38]

В сфере Khronos Group OpenCL и Vulkan являются низкоуровневыми API с неединым исходным кодом , обеспечивающими детальный контроль над аппаратными ресурсами и операциями. OpenCL широко используется для параллельного программирования на различных типах оборудования, в то время как Vulkan в первую очередь фокусируется на высокопроизводительных графических и вычислительных задачах. [39]

SYCL, с другой стороны, является высокоуровневым одноисходным встроенным доменно-специфическим языком C++ (eDSL). Он позволяет разработчикам писать код для гетерогенных вычислительных систем, включая CPU, GPU и другие ускорители, используя одноисходный подход. Это означает, что как код хоста, так и код устройства могут быть написаны в одном и том же исходном файле C++. [40]

CUDA

Для сравнения, версия CUDA на основе встроенного доменно-специфического языка C++ с одним исходным кодом , которая называется «CUDA Runtime API », несколько похожа на SYCL. Фактически, Intel выпустила инструмент под названием SYCLOMATIC, который автоматически транслировал код из CUDA в SYCL. [41] Однако существует менее известная версия CUDA с несколькими исходными кодами, которая называется «CUDA Driver API», похожая на OpenCL и используемая, например, самой реализацией CUDA Runtime API. [38]

SYCL расширяет возможности C++ AMP , освобождая программиста от явной передачи данных между хостом и устройствами с помощью буферов и аксессоров. Это контрастирует с CUDA (до введения Unified Memory в CUDA 6), где требовалась явная передача данных. Начиная с SYCL 2020, также можно использовать Unified Shared Memory (USM) для дополнения, а не замены интерфейсов на основе буферов, [42] предоставляя модель программирования более низкого уровня, похожую на Unified Memory в CUDA. [43]

SYCL — это язык более высокого уровня, чем C++ AMP и CUDA, поскольку вам не нужно строить явный график зависимостей между всеми ядрами, и он предоставляет вам автоматическое асинхронное планирование ядер с перекрытием коммуникаций и вычислений. Все это делается с использованием концепции аксессоров без необходимости какой-либо поддержки компилятора. [44]

В отличие от C++ AMP и CUDA, SYCL — это чистый C++ eDSL без какого-либо расширения C++. Это позволяет реализовать базовую реализацию ЦП, которая опирается на чистую среду выполнения без какого-либо конкретного компилятора. [40]

Оба компилятора DPC++ [45] и AdaptiveCpp [46] предоставляют бэкэнд для графических процессоров NVIDIA, подобно тому, как это делает CUDA. Это позволяет компилировать и запускать код SYCL на оборудовании NVIDIA, позволяя разработчикам использовать высокоуровневые абстракции SYCL на графических процессорах с поддержкой CUDA. [45] [46]

ROCm ХИП

ROCm HIP нацелен на Nvidia GPU, AMD GPU и x86 CPU. HIP — это низкоуровневый API, который очень похож на API CUDA. [47] Например, AMD выпустила инструмент под названием HIPIFY, который может автоматически переводить код CUDA в HIP. [48] Поэтому многие из пунктов, упомянутых в сравнении CUDA и SYCL, также применимы к сравнению HIP и SYCL. [49]

ROCm HIP имеет некоторые сходства с SYCL в том смысле, что он может быть ориентирован на различных поставщиков (AMD и Nvidia) и типы ускорителей (GPU и CPU). [50] Однако SYCL может быть ориентирован на более широкий спектр ускорителей и поставщиков. SYCL поддерживает несколько типов ускорителей одновременно в одном приложении через концепцию бэкэндов. Кроме того, SYCL написан на чистом C++, тогда как HIP, как и CUDA, использует некоторые расширения языка. Эти расширения не позволяют компилировать HIP с помощью стандартного компилятора C++. [49]

Компиляторы DPC++ [45] и AdaptiveCpp [46] предоставляют бэкэнды для графических процессоров NVIDIA и AMD, подобно тому, как это делает HIP. Это позволяет компилировать и выполнять код SYCL на оборудовании этих поставщиков, предлагая разработчикам гибкость в использовании высокоуровневых абстракций SYCL на разнообразных устройствах и платформах. [46] [45]

Коккос

SYCL имеет много общего с моделью программирования Kokkos , [51] включая использование непрозрачных многомерных массивов объектов (буферы SYCL и массивы Kokkos), многомерных диапазонов для параллельного выполнения и сокращений (добавлено в SYCL 2020). [52] Многочисленные функции в SYCL 2020 были добавлены в ответ на отзывы сообщества Kokkos.

SYCL больше фокусируется на гетерогенных системах; благодаря интеграции с OpenCL, он может быть принят на широком спектре устройств. Kokkos, с другой стороны, нацелен на большинство платформ HPC, [53] поэтому он больше ориентирован на HPC для производительности.

С 2024 года команда Kokkos разрабатывает бэкэнд SYCL, [54] который позволяет Kokkos ориентироваться на аппаратное обеспечение Intel в дополнение к платформам, которые он уже поддерживает. Эта разработка расширяет применимость Kokkos и обеспечивает большую гибкость в использовании различных аппаратных архитектур в приложениях HPC. [51]

Раджа

Raja [55] [56] — это библиотека абстракций программного обеспечения C++, обеспечивающая переносимость архитектуры и программирования приложений HPC.

Как и SYCL, он обеспечивает переносимый код на гетерогенных платформах. Однако, в отличие от SYCL, Raja вводит уровень абстракции над другими моделями программирования, такими как CUDA, HIP, OpenMP и другими. Это позволяет разработчикам писать свой код один раз и запускать его на различных бэкэндах, не изменяя основную логику. Raja поддерживается и разрабатывается в Ливерморской национальной лаборатории Лоуренса (LLNL), тогда как SYCL является открытым стандартом, поддерживаемым сообществом. [39]

Подобно Kokkos, Raja больше подходит для случаев использования HPC, фокусируясь на производительности и масштабируемости в высокопроизводительных вычислительных средах. В отличие от этого, SYCL поддерживает более широкий спектр устройств, что делает его более универсальным для различных типов приложений, выходящих за рамки только HPC. [56]

С 2024 года команда Raja разрабатывает бэкэнд SYCL, [57] который позволит Raja также ориентироваться на оборудование Intel. Эта разработка повысит переносимость и гибкость Raja, позволяя использовать возможности SYCL и расширить его применимость на более широком спектре аппаратных платформ. [39]

OpenMP

OpenMP нацелен на вычислительную разгрузку внешних ускорителей, [58] в первую очередь фокусируясь на многоядерных архитектурах и графических процессорах. SYCL, с другой стороны, ориентирован на более широкий спектр устройств благодаря своей интеграции с OpenCL, что обеспечивает поддержку различных типов аппаратных ускорителей. [59]

OpenMP использует подход на основе прагмы , где программист аннотирует код директивами, а компилятор обрабатывает сложность параллельного выполнения и управления памятью. Эта высокоуровневая абстракция упрощает разработчикам задачу параллелизации их приложений без необходимости иметь дело со сложными деталями передачи памяти и синхронизации. [60]

OpenMP и SYCL поддерживают C++ и стандартизированы. OpenMP стандартизирован Советом по рассмотрению архитектуры OpenMP (ARB), в то время как SYCL стандартизирован Khronos Group. [39]

OpenMP имеет широкую поддержку различных компиляторов, таких как GCC и Clang . [61]

стд::пар

std::par является частью стандарта C++17 [62] и разработан для облегчения параллельного выполнения стандартных алгоритмов в стандартных контейнерах C++. Он предоставляет стандартный способ использования внешних ускорителей, позволяя разработчикам указывать политику выполнения для параллельных операций, таких как std::for_each, std::transform, и std::reduce. Это позволяет эффективно использовать многоядерные процессоры и другое параллельное оборудование, не требуя существенных изменений в коде. [63]

SYCL может использоваться в качестве бэкэнда для std::par, позволяя выполнять стандартные алгоритмы на широком спектре внешних ускорителей, включая графические процессоры Intel, AMD и NVIDIA, а также другие типы ускорителей. [64] Используя возможности SYCL, разработчики могут писать стандартный код C++, который без проблем выполняется в гетерогенных вычислительных средах. Такая интеграция обеспечивает большую гибкость и оптимизацию производительности на различных аппаратных платформах. [64]

Использование SYCL в качестве бэкэнда std::parзависит от компилятора, то есть требуется компилятор, который поддерживает как SYCL, так и политики параллельного выполнения, представленные в C++17. [64] Примерами таких компиляторов являются DPC++ и другие SYCL-совместимые компиляторы. С помощью этих компиляторов разработчики могут воспользоваться абстракциями SYCL для управления памятью и параллельного выполнения, при этом по-прежнему используя знакомые стандартные алгоритмы и политики выполнения C++. [45]

Смотрите также

Ссылки

  1. ^ "Реестр Khronos SYCL - Группа Khronos Inc". registry.khronos.org .
  2. ^ Кериелл, Ронан (17 ноября 2019 г.). «SYCL: стандарт C++ с одним источником для гетерогенных вычислений» (PDF) . Khronos.org . Получено 26 сентября 2023 г. .
  3. ^ Кериелл, Ронан. "Значение SYCL". GitHub . Получено 5 февраля 2021 г.
  4. ^ Khronos Group (19 марта 2014 г.). "Khronos выпускает предварительную спецификацию SYCL 1.2". Khronos . Получено 20 августа 2017 г. .
  5. ^ Khronos Group (11 мая 2015 г.). "Khronos выпускает финальную спецификацию SYCL 1.2". Khronos . Получено 20 августа 2017 г. .
  6. ^ Khronos Group (6 декабря 2017 г.). "The Khronos Group выпускает финализированную версию SYCL 1.2.1". Khronos . Получено 12 декабря 2017 г.
  7. ^ Khronos Group (18 апреля 2016 г.). "Khronos выпускает предварительную спецификацию OpenCL 2.2 с языком ядра OpenCL C++". Khronos . Получено 18 сентября 2017 г. .
  8. ^ Khronos Group (9 февраля 2021 г.). "Khronos выпускает спецификацию SYCL 2020". Khronos . Получено 22 февраля 2021 г. .
  9. ^ Khronos Group (30 июня 2020 г.). «Khronos делает шаги к широкому развертыванию SYCL с выпуском предварительной спецификации SYCL 2020». Khronos . Получено 4 декабря 2020 г. .
  10. ^ «SYCL State of the Union Keynote SYCLCon 2021» (PDF) . www.iwocl.org .
  11. ^ Рейндерс, Джеймс. «SYCL, DPC++, XPU, oneAPI» (PDF) . www.iwocl.org .
  12. ^ «Компиляция кросс-архитектуры: компилятор Intel® oneAPI DPC++/C++».
  13. ^ "Главная - ComputeCpp CE - Продукты - Разработчик Codeplay".
  14. ^ «Руководства - ComputeCpp CE - Продукты - Разработчик Codeplay».
  15. ^ "Будущее ComputeCpp". www.codeplay.com . Получено 2023-12-09 .
  16. ^ "Поддержка функций AdaptiveCpp". GitHub . 4 июля 2023 г.
  17. ^ "AdaptiveCpp/doc/compilation.md в разработке · AdaptiveCpp/AdaptiveCpp". GitHub .
  18. ^ "AdaptiveCpp (ранее известный как hipSYCL / Open SYCL)". GitHub . 4 июля 2023 г.
  19. ^ "triSYCL". GitHub . 6 января 2022 г.
  20. ^ Ke, Yinan; Agung, Mulya; Takizawa, Hiroyuki (2021). "NeoSYCL: реализация SYCL для SX-Aurora TSUBASA". Международная конференция по высокопроизводительным вычислениям в Азиатско-Тихоокеанском регионе . стр.  50–57 . doi :10.1145/3432261.3432268. ISBN 9781450388429. S2CID  231597238.
  21. ^ Ke, Yinan; Agung, Mulya; Takizawa, Hiroyuki (2021). "NeoSYCL: реализация SYCL для SX-Aurora TSUBASA". Международная конференция по высокопроизводительным вычислениям в Азиатско-Тихоокеанском регионе . стр.  50–57 . doi :10.1145/3432261.3432268. ISBN 9781450388429. S2CID  231597238.
  22. ^ "Sycl-GTX". GitHub . 10 апреля 2021 г.
  23. ^ Томан, Питер; Гогл, Дэниел; Фарингер, Томас. «Sylkan — на пути к целевой вычислительной платформе Vulkan для SYCL» (PDF) .
  24. ^ "Polygeist". GitHub . 25 февраля 2022 г.
  25. ^ "Интеон". 25 февраля 2022 г.
  26. ^ ab "Khronos создаст открытый стандарт SYCL SC для критически важных для безопасности гетерогенных вычислений на основе C++". Группа Khronos . 2023-03-15 . Получено 2024-07-10 .
  27. ^ "MISRA" . Получено 2024-07-11 .
  28. ^ "ED-12C Aviation Software Standards Training - Airborne". Eurocae . Получено 2024-07-11 .
  29. ^ "SOTIF – практическое обучение". www.kuglermaag.com . Получено 2024-07-11 .
  30. ^ Треветт, Нил. «Состояние рабочей группы OpenCL в Союзе» (PDF) . www.iwocl.org .
  31. ^ Криски, Луиджи; Салими Бени, Маджид; Козенца, Бьяджо; Сципионе, Николо; Гадиоли, Давиде; Виталий, Эмануэле; Палермо, Джанлука; Беккари, Андреа (10 мая 2022 г.). «На пути к портативному трубопроводу для поиска лекарств с SYCL 2020». Международный семинар по OpenCL . IWOCL '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1–2 . doi : 10.1145/3529538.3529688. ISBN 978-1-4503-9658-5.
  32. ^ Солис-Васкес, Леонардо; Маскаренас, Эдвард; Кох, Андреас (18.04.2023). «Опыт миграции CUDA в SYCL: исследование случая молекулярной стыковки». Международный семинар по OpenCL . IWOCL '23. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1– 11. doi : 10.1145/3585341.3585372. ISBN 979-8-4007-0745-2.
  33. ^ "Llama.CPP/Docs/Backend/SYCL.md в master · ggerganov/Llama.CPP". GitHub .
  34. ^ Рудкин, Илья. «Могут ли SYCL и OpenCL решить проблемы функциональной безопасности» (PDF) . 2021-04-09 .
  35. ^ Ранхел, Эстебан Мигель; Пенникук, Саймон Джон; Поуп, Адриан; Фронтьер, Николас; Ма, Чжицян; Маданант, Варша (12.11.2023). «Переносимая по производительности реализация SYCL CRK-HACC для экзафлопсных вычислений». Труды семинаров SC '23 Международной конференции по высокопроизводительным вычислениям, сетям, хранению и анализу . SC-W '23. Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1114–1125 . arXiv : 2310.16122 . doi :10.1145/3624062.3624187. ISBN 979-8-4007-0785-8.
  36. ^ "SYCL Resources". khronos.org . Группа Khronos. 20 января 2014 г.
  37. ^ "SYCL Open Source Specification". GitHub . 10 января 2022 г.
  38. ^ ab Брейер, Марсель; Ван Крейн, Александр; Пфлюгер, Дирк (2022-05-10). "Сравнение SYCL, OpenCL, CUDA и OpenMP для классификации с помощью машин опорных векторов с массовым параллелизмом на оборудовании разных поставщиков". Международный семинар по OpenCL . IWOCL '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1– 12. doi : 10.1145/3529538.3529980. ISBN 978-1-4503-9658-5.
  39. ^ abcd "SYCL - C++ Single-source Heterogeneous Programming for Acceleration Offload". Группа Khronos . 2014-01-20 . Получено 12 июля 2024 .
  40. ^ ab "SYCL™ 2020 Specification (revision 8)". registry.khronos.org . Получено 2024-07-12 .
  41. ^ oneapi-src/SYCLomatic, oneAPI-SRC, 2024-07-11 , получено 2024-07-11
  42. ^ "SYCL™ 2020 Specification (revision 9), 4.8. Унифицированная общая память (USM)" . Получено 2024-10-30 .
  43. ^ Чен, Джолли; Дессоле, Моника; Варбанеску, Ана Люсия (24.01.2024), Уроки, извлеченные при миграции CUDA в SYCL: исследование случая HEP с ROOT RDataFrame , arXiv : 2401.13310
  44. ^ "Режимы доступа к буферу". Intel . Получено 2024-07-11 .
  45. ^ abcde "Документация DPC++ — Документация по компилятору oneAPI DPC++". intel.github.io . Получено 2024-07-11 .
  46. ^ abcd "AdaptiveCpp/doc/sycl-ecosystem.md в develop · AdaptiveCpp/AdaptiveCpp". GitHub . Получено 2024-07-11 .
  47. ^ ROCm/HIP, AMD ROCm™ Software, 2024-07-11 , получено 2024-07-11
  48. ^ "HIPIFY/README.md в amd-staging · ROCm/HIPIFY". GitHub . Получено 2024-07-11 .
  49. ^ ab Jin, Zheming; Vetter, Jeffrey S. (ноябрь 2022 г.). «Оценка неоднородного сокращения в HIP и SYCL на графических процессорах». 2022 IEEE/ACM 8-й Международный семинар по анализу и сокращению больших научных данных (DRBSD) . IEEE. стр.  37–43 . doi :10.1109/DRBSD56682.2022.00010. ISBN 978-1-6654-6337-9. ОСТИ  1996715.
  50. ^ Регули, Иштван З. (2023-11-12). «Оценка производительности переносимости SYCL между ЦП и ГП в приложениях с ограниченной полосой пропускания». Труды семинаров SC '23 Международной конференции по высокопроизводительным вычислениям, сетям, хранению и анализу . SC-W '23. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1038–1047 . arXiv : 2309.10075 . doi : 10.1145 /3624062.3624180. ISBN 979-8-4007-0785-8.
  51. ^ ab Hammond, Jeff R.; Kinsner, Michael; Brodman, James (2019). «Сравнительный анализ Kokkos и SYCL как гетерогенных параллельных моделей программирования для приложений C++». Труды Международного семинара по OpenCL . стр.  1– 2. doi :10.1145/3318170.3318193. ISBN 9781450362306. S2CID  195777149.
  52. ^ Dufek, Amanda S.; Gayatri, Rahulkumar; Mehta, Neil; Doerfler, Douglas; Cook, Brandon; Ghadar, Yasaman; DeTar, Carleton (ноябрь 2021 г.). «Исследование использования Kokkos и SYCL в качестве переносимых по производительности фреймворков для эталонного теста Milc-Dslash на графических процессорах NVIDIA, AMD и Intel». Международный семинар 2021 года по производительности, переносимости и продуктивности в HPC (P3HPC) . IEEE. стр.  57–67 . doi :10.1109/P3HPC54578.2021.00009. ISBN 978-1-6654-2439-4.
  53. ^ Тротт, Кристиан Р.; Лебрен-Грандье, Дэмиен; Арндт, Даниэль; Циеско, Ян; Данг, Винь; Эллингвуд, Натан; Гаятри, Рахулкумар; Харви, Эван; Холлман, Дейзи С. (2022), Kokkos 3: Programming Model Extensions for the Exascale Era , получено 10 июля 2024 г.
  54. ^ Арндт, Даниэль; Лебрен-Гранди, Дэмиен; Тротт, Кристиан (2024-04-08). «Опыт внедрения бэкэнда SYCL Kokkos». Труды 12-го Международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1– 11. doi :10.1145/3648115.3648118. ISBN 979-8-4007-1790-1. ОСТИ  2336667.
  55. ^ LLNL/RAJA, Национальная лаборатория им. Лоуренса в Ливерморе, 2024-07-08 , получено 2024-07-10
  56. ^ ab Beckingsale, David A.; Scogland, Thomas RW; Burmark, Jason; Hornung, Rich; Jones, Holger; Killian, William; Kunen, Adam J.; Pearce, Olga; Robinson, Peter; Ryujin, Brian S. (ноябрь 2019 г.). "RAJA: портативная производительность для крупномасштабных научных приложений". Международный семинар IEEE/ACM 2019 года по производительности, портативности и продуктивности в HPC (P3HPC) . IEEE. стр.  71– 81. doi :10.1109/P3HPC49587.2019.00012. ISBN 978-1-7281-6003-0. ОСТИ  1488819.
  57. ^ Хомердинг, Брайан; Варгас, Артуро; Скогланд, Том; Чен, Роберт; Дэвис, Майк; Хорнунг, Рич (2024-04-08). «Включение RAJA на графических процессорах Intel с помощью SYCL». Труды 12-го международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр.  1– 10. doi :10.1145/3648115.3648131. ISBN 979-8-4007-1790-1.
  58. ^ tim.lewis. "Home". OpenMP . Получено 2024-07-10 .
  59. ^ "OpenCL - Открытый стандарт параллельного программирования гетерогенных систем". Группа Khronos . 2013-07-21 . Получено 2024-07-12 .
  60. ^ Фридман, Ричард. "Справочные руководства". OpenMP . Получено 12 июля 2024 г.
  61. ^ «Компиляторы и инструменты OpenMP».
  62. ^ "std::execution::seq, std::execution::par, std::execution::par_unseq, std::execution::unseq - cppreference.com". en.cppreference.com . Получено 2024-07-10 .
  63. ^ "Ускорение стандартного C++ с помощью графических процессоров с использованием stdpar". Технический блог NVIDIA . 2020-08-04 . Получено 2024-07-10 .
  64. ^ abc Alpay, Aksel; Heuveline, Vincent (2024-04-08). "AdaptiveCpp Stdpar: C++ Standard Parallelism Integrated into a SYCL Compiler". Труды 12-го Международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Association for Computing Machinery. стр.  1– 12. doi :10.1145/3648115.3648117. ISBN 979-8-4007-1790-1.
  • Веб-страница Khronos SYCL
  • Спецификации SYCL в реестре Khronos
  • C++17 ParallelSTL в SYCL
  • Технические ресурсы SYCL
  • Реализация Codeplay ComputeCpp SYCL
  • Реализация SYCL начата Intel с целью поддержки Clang/LLVM
  • AdaptiveCpp (ранее известный как hipSYCL / Open SYCL)
  • реализация SYCL с открытым исходным кодом triSYCL
  • «SYCL 2020 стартует с новым названием, новыми функциями и высокими амбициями», статья HPCWire (9 февраля 2021 г.)
  • Джеймс Рейндерс, Бен Эшбо, Джеймс Бродман, Майкл Кинснер, Джон Пенникук, Синьминь Тянь: «Параллельный анализ данных на C++: освоение DPC++ для программирования гетерогенных систем с использованием C++ и SYCL», Apress (2021), OpenAccess.
Взято с "https://en.wikipedia.org/w/index.php?title=SYCL&oldid=1257600236"