СИКЛ
Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с предметом , что потенциально препятствует тому, чтобы статья была проверяемой и нейтральной . ( январь 2019 г. ) |
![]() | |
Оригинальный автор(ы) | Хронос Групп |
---|---|
Разработчик(и) | Хронос Групп |
Первоначальный выпуск | март 2014 г |
Стабильная версия | Версия 8 (1.2.1) 2020 г. / 19 октября 2023 г [1] |
Операционная система | Кросс-платформенный |
Платформа | Кросс-платформенный |
Тип | Язык программирования высокого уровня |
Веб-сайт | www |
SYCL (произносится как «серп») — это модель программирования более высокого уровня, предназначенная для повышения производительности программирования на различных аппаратных ускорителях . Это встроенный предметно-ориентированный язык с одним исходным кодом ( eDSL ), основанный на чистом C++17 . Это стандарт, разработанный Khronos Group и анонсированный в марте 2014 года.
Происхождение имени
[ редактировать ]«серп») первоначально обозначал SY общесистемный компьютерный язык . SYCL (произносится как [2] но с 2020 года разработчики SYCL заявили, что SYCL — это имя, и ясно дали понять, что оно больше не является аббревиатурой и не содержит ссылок на OpenCL . [3]
Цель
[ редактировать ]SYCL — это бесплатный кроссплатформенный уровень абстракции, основанный на базовых концепциях, переносимости и эффективности, вдохновленных OpenCL , который позволяет писать код для гетерогенных процессоров в стиле «единого исходного кода» с использованием полностью стандартного C++ . SYCL обеспечивает разработку из одного исходного кода, где функции шаблона C++ могут содержать код как хоста, так и устройства для создания сложных алгоритмов, использующих аппаратные ускорители , а затем повторно использовать их в исходном коде для разных типов данных.
Хотя стандарт SYCL зародился как подгруппа модели программирования более высокого уровня рабочей группы OpenCL и изначально был разработан для использования с OpenCL и SPIR , SYCL является рабочей группой Khronos Group, независимой от рабочей группы OpenCL с 20 сентября 2019 года и начиная с 20 сентября 2019 года. в SYCL 2020 SYCL был обобщен как более общая гетерогенная структура, способная ориентироваться на другие системы. Теперь это возможно благодаря концепции универсального бэкэнда , ориентированного на любой API-интерфейс ускорения , обеспечивая при этом полную совместимость с целевым API , например, используя существующие собственные библиотеки для достижения максимальной производительности и одновременного упрощения процесса программирования. Например, реализация Open SYCL нацелена на ROCm и CUDA через AMD межвендорный HIP .
Версии
[ редактировать ]SYCL был представлен на GDC в марте 2014 года спредварительная версия 1.2, [4] тогда была окончательная версия SYCL 1.2.представлен на IWOCL 2015 в мае 2015 года. [5]
Последней версией предыдущей серии SYCL 1.2.1 является SYCL 1.2.1 редакция 7, опубликованная 27 апреля 2020 г. (первая версия была опубликована 6 декабря 2017 г.) [6] ).
Предварительная версия SYCL 2.2 была представлена на IWOCL 2016 в мае 2016 года. [7] ориентирован на C++14 и OpenCL 2.2. Но комитет SYCL предпочел не дорабатывать эту версию и перейти к более гибкой спецификации SYCL, чтобы учесть растущее разнообразие современных аппаратных ускорителей , включая механизмы искусственного интеллекта , что привело к появлению SYCL 2020.
Последней версией является SYCL 2020, редакция 6, опубликованная 13 ноября 2022 года и являющаяся развитием первой версии ревизии 2, опубликованной 9 февраля 2021 года. [8] с учетом отзывов пользователей и разработчиков предварительной спецификации SYCL 2020, редакция 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: инфраструктура фирмы Codeplay , соответствующая SYCL 1.2.1, с версией сообщества. [13] [14] Сейчас устарел в пользу DPC++. [15]
- AdaptiveCpp (ранее hipSYCL и Open SYCL): неполная поддержка 1.2.1 без изображений или взаимодействия с OpenCL; частично SYCL 2020. [16] Поддерживает AMD (ROCm), Nvidia (CUDA), Intel (нулевой уровень через SPIR-V) и процессоры (LLVM + OpenMP). [17] Может создавать полностью универсальные двоичные файлы, используя среду выполнения «точно в срок». Поддерживает стандартный параллелизм 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 критически важна
[ редактировать ]В марте группа «Хронос» объявила о создании рабочей группы 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]
- Искусственный интеллект
- llama.cpp : библиотека программного обеспечения с открытым исходным кодом, которая выполняет логические выводы на различных моделях большого языка, таких как Llama . [33]
- Автомобильная промышленность
- Космология
- 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). Он позволяет разработчикам писать код для гетерогенных вычислительных систем, включая процессоры, графические процессоры и другие ускорители, используя подход из одного источника. Это означает, что код хоста и устройства может быть написан в одном исходном файле C++. [40]
ДРУГОЙ
[ редактировать ]Для сравнения, с одним исходным кодом C++ версия CUDA со встроенным доменным языком , которая называется «CUDA Runtime API », несколько похожа на SYCL. Фактически, Intel выпустила инструмент под названием SYCLOMATIC, который автоматически транслировал код из CUDA в SYCL. [41] Однако существует менее известная версия CUDA без единого исходного кода, которая называется «CUDA Driver API», похожая на OpenCL и используемая, например, самой реализацией CUDA Runtime API. [38]
SYCL расширяет возможности C++ AMP , освобождая программиста от необходимости явно передавать данные между хостом и устройствами с помощью буферов и методов доступа. В этом отличие от CUDA (до появления унифицированной памяти в CUDA 6), где требовалась явная передача данных. Начиная с SYCL 2020, также можно использовать USM вместо буферов и средств доступа , обеспечивая модель программирования нижнего уровня, аналогичную Unified Memory в CUDA. [42]
SYCL является более высокоуровневым, чем C++ AMP и CUDA, поскольку вам не нужно строить явный граф зависимостей между всеми ядрами, и он обеспечивает автоматическое асинхронное планирование ядер с перекрытием связи и вычислений. Все это делается с использованием концепции средств доступа, не требуя какой-либо поддержки компилятора. [43]
В отличие от C++ AMP и CUDA, SYCL — это чистый eDSL C++ без каких-либо расширений C++. Это позволяет реализовать базовую реализацию ЦП, основанную на чистой среде выполнения без какого-либо специального компилятора. [40]
Оба ЦОД++ [44] и Адаптивекпп [45] компиляторы предоставляют серверную часть графическим процессорам NVIDIA, аналогично тому, как это делает CUDA. Это позволяет компилировать и запускать код SYCL на оборудовании NVIDIA, позволяя разработчикам использовать высокоуровневые абстракции SYCL на графических процессорах с поддержкой CUDA. [44] [45]
РОКМ ХИП
[ редактировать ]ROCm HIP предназначен для графических процессоров Nvidia, графических процессоров AMD и процессоров x86. HIP — это API более низкого уровня, который очень похож на API CUDA. [46] Например, AMD выпустила инструмент HIPIFY, который может автоматически транслировать код CUDA в HIP. [47] Таким образом, многие моменты, упомянутые при сравнении CUDA и SYCL, также применимы и к сравнению HIP и SYCL. [48]
ROCm HIP имеет некоторое сходство с SYCL в том смысле, что он может быть ориентирован на различных поставщиков (AMD и Nvidia) и типы ускорителей (GPU и CPU). [49] Однако SYCL может быть ориентирован на более широкий круг ускорителей и поставщиков. SYCL поддерживает несколько типов ускорителей одновременно в одном приложении посредством концепции бэкэндов. Кроме того, SYCL написан на чистом C++, тогда как HIP, как и CUDA, использует некоторые языковые расширения. Эти расширения предотвращают компиляцию HIP стандартным компилятором C++. [48]
Оба ЦОД++ [44] и Адаптивекпп [45] компиляторы предоставляют серверные части для графических процессоров NVIDIA и AMD, аналогично тому, как это делает HIP. Это позволяет компилировать и выполнять код SYCL на оборудовании этих поставщиков, предоставляя разработчикам гибкость в использовании высокоуровневых абстракций SYCL на самых разных устройствах и платформах. [45] [44]
Костер
[ редактировать ]SYCL имеет много общего с моделью программирования Kokkos . [50] включая использование непрозрачных объектов многомерных массивов (буферов SYCL и массивов Kokkos), многомерных диапазонов для параллельного выполнения и сокращений (добавлено в SYCL 2020). [51] Многочисленные функции в SYCL 2020 были добавлены в ответ на отзывы сообщества Kokkos.
SYCL больше фокусируется на гетерогенных системах; благодаря интеграции с OpenCL его можно использовать на широком спектре устройств. Kokkos, с другой стороны, ориентирован на большинство платформ HPC. [52] таким образом, он более ориентирован на высокопроизводительные вычисления по производительности.
По состоянию на 2024 год команда Kokkos занимается разработкой бэкэнда SYCL. [53] что позволяет Kokkos атаковать оборудование Intel в дополнение к уже поддерживаемым платформам. Эта разработка расширяет возможности применения Kokkos и обеспечивает большую гибкость в использовании различных аппаратных архитектур в приложениях HPC. [50]
Король
[ редактировать ]Король [54] [55] — это библиотека программных абстракций C++, обеспечивающая переносимость архитектуры и программирования приложений HPC.
Как и SYCL, он предоставляет переносимый код на гетерогенные платформы. Однако, в отличие от SYCL, Raja вводит уровень абстракции по сравнению с другими моделями программирования, такими как CUDA, HIP, OpenMP и другими. Это позволяет разработчикам написать свой код один раз и запускать его на различных серверах без изменения базовой логики. Raja поддерживается и развивается в Ливерморской национальной лаборатории имени Лоуренса (LLNL), тогда как SYCL — это открытый стандарт, поддерживаемый сообществом. [39]
Подобно Kokkos, Raja больше приспособлен для случаев использования высокопроизводительных вычислений, уделяя особое внимание производительности и масштабируемости в высокопроизводительных вычислительных средах. SYCL, напротив, поддерживает более широкий спектр устройств, что делает его более универсальным для различных типов приложений, помимо HPC. [55]
По состоянию на 2024 год команда Raja разрабатывает бэкэнд SYCL. [56] что позволит Raja также атаковать оборудование Intel. Эта разработка повысит мобильность и гибкость Raja, позволяя использовать возможности SYCL и расширить возможности его применения на более широком спектре аппаратных платформ. [39]
OpenMP
[ редактировать ]OpenMP нацелен на разгрузку вычислений на внешние ускорители. [57] основное внимание уделяется многоядерным архитектурам и графическим процессорам. SYCL же ориентирован на более широкий круг устройств благодаря интеграции с OpenCL, что обеспечивает поддержку различных типов аппаратных ускорителей. [58]
OpenMP использует подход, основанный на прагме , при котором программист аннотирует код директивами, а компилятор берет на себя сложность параллельного выполнения и управления памятью. Эта абстракция высокого уровня упрощает разработчикам распараллеливание своих приложений, не вникая в сложные детали передачи памяти и синхронизации. [59]
И OpenMP, и SYCL поддерживают C++ и стандартизированы. OpenMP стандартизируется Советом по обзору архитектуры OpenMP (ARB), а SYCL стандартизируется Khronos Group. [39]
OpenMP имеет широкую поддержку различных компиляторов, таких как GCC и Clang . [60]
станд::пар
[ редактировать ]std::par является частью стандарта C++17. [61] и предназначен для облегчения параллельного выполнения стандартных алгоритмов в стандартных контейнерах C++. Он предоставляет стандартный способ использования преимуществ внешних ускорителей, позволяя разработчикам указывать политику выполнения для параллельных операций, таких как std::for_each
, std::transform
, и std::reduce
. Это позволяет эффективно использовать многоядерные процессоры и другое параллельное оборудование без необходимости внесения существенных изменений в код. [62]
SYCL можно использовать в качестве бэкэнда для std::par
, позволяющий выполнять стандартные алгоритмы на широком спектре внешних ускорителей, включая графические процессоры Intel, AMD и NVIDIA, а также ускорители других типов. [63] Используя возможности SYCL, разработчики могут писать стандартный код C++, который легко выполняется в гетерогенных вычислительных средах. Такая интеграция обеспечивает большую гибкость и оптимизацию производительности на различных аппаратных платформах. [63]
Использование SYCL в качестве бэкэнда для std::par
зависит от компилятора, то есть для него требуется компилятор, поддерживающий как SYCL, так и политики параллельного выполнения, представленные в C++17. [63] Примеры таких компиляторов включают DPC++ и другие компиляторы, совместимые с SYCL. С помощью этих компиляторов разработчики могут воспользоваться преимуществами абстракций SYCL для управления памятью и параллельного выполнения, при этом используя знакомые стандартные алгоритмы C++ и политики выполнения. [44]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Реестр Khronos SYCL — Khronos Group Inc» .
- ^ Кериелл, Ронан (17 ноября 2019 г.). «SYCL: единый стандарт C++ для гетерогенных вычислений» (PDF) . Хронос.орг . Проверено 26 сентября 2023 г.
- ^ Кериелл, Ронан. «Значение SYCL» . Гитхаб . Проверено 5 февраля 2021 г.
- ^ Группа «Хронос» (19 марта 2014 г.). «Хронос выпускает предварительную спецификацию SYCL 1.2» . Хронос . Проверено 20 августа 2017 г.
- ^ Группа «Хронос» (11 мая 2015 г.). «Хронос выпускает окончательную спецификацию SYCL 1.2» . Хронос . Проверено 20 августа 2017 г.
- ^ Группа «Хронос» (6 декабря 2017 г.). «Группа Khronos выпускает финальную версию SYCL 1.2.1» . Хронос . Проверено 12 декабря 2017 г.
- ^ Группа «Хронос» (18 апреля 2016 г.). «Khronos выпускает предварительную спецификацию OpenCL 2.2 с языком ядра OpenCL C++» . Хронос . Проверено 18 сентября 2017 г.
- ^ Группа «Хронос» (9 февраля 2021 г.). «Хронос выпускает спецификацию SYCL 2020» . Хронос . Проверено 22 февраля 2021 г.
- ^ Группа «Хронос» (30 июня 2020 г.). «Хронос делает шаг к широкому развертыванию SYCL с выпуском предварительной спецификации SYCL 2020» . Хронос . Проверено 4 декабря 2020 г.
- ^ https://www.iwocl.org/wp-content/uploads/k04-iwocl-syclcon-2021-wong-slides.pdf [ пустой URL PDF ]
- ^ https://www.iwocl.org/wp-content/uploads/k01-iwocl-syclcon-2021-reinders-slides.pdf [ пустой URL PDF ]
- ^ «Компиляция кросс-архитектуры: компилятор Intel® oneAPI DPC++/C++» .
- ^ «Главная — ComputeCpp CE — Продукты — Разработчик Codeplay» .
- ^ «Руководства — ComputeCpp CE — Продукты — Разработчик Codeplay» .
- ^ «Будущее ComputeCpp» . www.codeplay.com . Проверено 9 декабря 2023 г.
- ^ «Поддержка функции AdaptiveCpp» . Гитхаб . 4 июля 2023 г.
- ^ «AdaptiveCpp/doc/compilation.md в разработке · AdaptiveCpp/AdaptiveCpp» . Гитхаб .
- ^ «AdaptiveCpp (ранее известный как hipSYCL/Open SYCL)» . Гитхаб . 4 июля 2023 г.
- ^ «триСИКЛ» . Гитхаб . 6 января 2022 г.
- ^ Кэ, Инань; Агунг, Муля; Такизава, Хироюки (2021). «NeoSYCL: реализация SYCL для SX-Aurora TSUBASA» . Международная конференция по высокопроизводительным вычислениям в Азиатско-Тихоокеанском регионе . стр. 50–57. дои : 10.1145/3432261.3432268 . ISBN 9781450388429 . S2CID 231597238 .
- ^ Кэ, Инань; Агунг, Муля; Такизава, Хироюки (2021). «NeoSYCL: реализация SYCL для SX-Aurora TSUBASA» . Международная конференция по высокопроизводительным вычислениям в Азиатско-Тихоокеанском регионе . стр. 50–57. дои : 10.1145/3432261.3432268 . ISBN 9781450388429 . S2CID 231597238 .
- ^ «Сикл-GTX» . Гитхаб . 10 апреля 2021 г.
- ^ https://www.iwocl.org/wp-content/uploads/14-iwocl-syclcon-2021-thoman-slides.pdf [ пустой URL PDF ]
- ^ «Полигейст» . Гитхаб . 25 февраля 2022 г.
- ^ «Интеон» . 25 февраля 2022 г.
- ^ Перейти обратно: а б «Хронос создаст открытый стандарт SYCL SC для критически важных для безопасности гетерогенных вычислений на основе C++» . Группа «Хронос» . 15 марта 2023 г. Проверено 10 июля 2024 г.
- ^ «МИСРА» . Проверено 11 июля 2024 г.
- ^ «Обучение стандартам авиационного программного обеспечения ED-12C — бортовой» . Еврокей . Проверено 11 июля 2024 г.
- ^ «СОТИФ – практика» . www.kuglermaag.com . Проверено 11 июля 2024 г.
- ^ https://www.iwocl.org/wp-content/uploads/k03-iwocl-syclcon-2021-trevett-updated.mp4.pdf [ пустой URL PDF ]
- ^ Криски, Луиджи; Салими Бени, Маджид; Козенца, Бьяджо; Сципион, Николо; Гадиоли, Давиде; Виталий, Эмануэле; Палермо, Джанлука; Беккари, Андреа (10 мая 2022 г.). «На пути к портативному конвейеру для поиска лекарств с SYCL 2020» . Международный семинар по OpenCL . IWOCL '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–2. дои : 10.1145/3529538.3529688 . ISBN 978-1-4503-9658-5 .
- ^ Солис-Васкес, Леонардо; Маскареньяш, Эдвард; Кох, Андреас (18 апреля 2023 г.). «Опыт миграции CUDA на SYCL: пример молекулярной стыковки» . Международный семинар по OpenCL . IWOCL '23. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–11. дои : 10.1145/3585341.3585372 . ISBN 979-8-4007-0745-2 .
- ^ https://github.com/ggerganov/llama.cpp/blob/master/docs/backend/SYCL.md
- ^ https://www.iwocl.org/wp-content/uploads/20-iwocl-syclcon-2021-rudkin-slides.pdf [ пустой URL PDF ]
- ^ Ранхель, Эстебан Мигель; Пенникук, Саймон Джон; Папа, Адриан; Фронтьер, Николас; Ма, Чжицян; Маданант, Варша (12 ноября 2023 г.). «Переносная реализация SYCL CRK-HACC для Exascale» . Материалы семинаров SC '23 Международной конференции по высокопроизводительным вычислениям, сетям, хранилищам и анализу . СК-В '23. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1114–1125. arXiv : 2310.16122 . дои : 10.1145/3624062.3624187 . ISBN 979-8-4007-0785-8 .
- ^ «Ресурсы СИКЛ» . khronos.org . Группа Хронос. 20 января 2014 г.
- ^ «Спецификация открытого исходного кода SYCL» . Гитхаб . 10 января 2022 г.
- ^ Перейти обратно: а б Брейер, Марсель; Ван Краен, Александр; Пфлюгер, Дирк (10 мая 2022 г.). «Сравнение SYCL, OpenCL, CUDA и OpenMP для массово-параллельной классификации машин опорных векторов на оборудовании разных производителей» . Международный семинар по OpenCL . IWOCL '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–12. дои : 10.1145/3529538.3529980 . ISBN 978-1-4503-9658-5 .
- ^ Перейти обратно: а б с д «SYCL — гетерогенное программирование на C++ с одним исходным кодом для ускорения разгрузки» . Группа «Хронос» . 20 января 2014 г. Проверено 12 июля 2024 г.
- ^ Перейти обратно: а б «Спецификация SYCL™ 2020 (редакция 8)» . Реестр.khronos.org . Проверено 12 июля 2024 г.
- ^ oneapi-src/SYCLomatic , oneAPI-SRC, 11 июля 2024 г. , получено 11 июля 2024 г.
- ^ Чен, Джолли; Дессоль, Моника; Варбанеску, Ана Люсия (24 января 2024 г.), Извлеченные уроки по миграции CUDA на SYCL: практический пример HEP с ROOT RDataFrame , arXiv : 2401.13310 , получено 12 июля 2024 г.
- ^ «Режимы доступа к буферу» . Интел . Проверено 11 июля 2024 г.
- ^ Перейти обратно: а б с д и «Документация DPC++ — документация по компилятору oneAPI DPC++» . intel.github.io . Проверено 11 июля 2024 г.
- ^ Перейти обратно: а б с д «AdaptiveCpp/doc/sycl-ecosystem.md в разработке · AdaptiveCpp/AdaptiveCpp» . Гитхаб . Проверено 11 июля 2024 г.
- ^ ROCm/HIP , Программное обеспечение AMD ROCm™, 11 июля 2024 г. , получено 11 июля 2024 г.
- ^ «HIPIFY/README.md на amd-staging · ROCm/HIPIFY» . Гитхаб . Проверено 11 июля 2024 г.
- ^ Перейти обратно: а б Цзинь, Чжэмин; Веттер, Джеффри С. (ноябрь 2022 г.). «Оценка неравномерного снижения HIP и SYCL на графических процессорах» . 2022 г. 8-й международный семинар IEEE/ACM по анализу и сжатию больших научных данных (DRBSD) . IEEE. стр. 37–43. дои : 10.1109/DRBSD56682.2022.00010 . ISBN 978-1-6654-6337-9 . ОСТИ 1996715 .
- ^ Регули, Иштван З. (12 ноября 2023 г.). «Оценка переносимости производительности SYCL между центральными и графическими процессорами в приложениях с ограниченной полосой пропускания» . Материалы семинаров SC '23 Международной конференции по высокопроизводительным вычислениям, сетям, хранилищам и анализу . СК-В '23. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1038–1047. arXiv : 2309.10075 . дои : 10.1145/3624062.3624180 . ISBN 979-8-4007-0785-8 .
- ^ Перейти обратно: а б Хаммонд, Джефф Р.; Кинснер, Майкл; Бродман, Джеймс (2019). «Сравнительный анализ Kokkos и SYCL как гетерогенных моделей параллельного программирования для приложений C++» . Материалы международного семинара по OpenCL . стр. 1–2. дои : 10.1145/3318170.3318193 . ISBN 9781450362306 . S2CID 195777149 .
- ^ Дуфек, Аманда С.; Гаятри, Рахулкумар; Мехта, Нил; Дорфлер, Дуглас; Кук, Брэндон; Гадар, Ясаман; ДеТар, Карлтон (ноябрь 2021 г.). «Пример использования Kokkos и SYCL в качестве портативных платформ для производительности для теста Milc-Dslash на графических процессорах NVIDIA, AMD и Intel» . Международный семинар по производительности, портативности и производительности в высокопроизводительных вычислениях (P3HPC) 2021 г. IEEE. стр. 57–67. дои : 10.1109/P3HPC54578.2021.00009 . ISBN 978-1-6654-2439-4 .
- ^ Тротт, Кристиан Р.; Лебрен-Грандье, Дамьен; Арндт, Дэниел; Ческо, Ян; Данг, Винь; Эллингвуд, Натан; Гаятри, Рахулкумар; Харви, Эван; Холлман, Дейзи С. (2022), Коккос 3: Расширения моделей программирования для эпохи экзафлопсов , получено 10 июля 2024 г.
- ^ Арндт, Дэниел; Лебрен-Гранди, Дэмиен; Тротт, Кристиан (8 апреля 2024 г.). «Опыт внедрения бэкэнда SYCL Kokkos» . Материалы 12-го международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–11. дои : 10.1145/3648115.3648118 . ISBN 979-8-4007-1790-1 . ОСТИ 2336667 .
- ^ LLNL/RAJA , Ливерморская национальная лаборатория Лоуренса, 8 июля 2024 г. , получено 10 июля 2024 г.
- ^ Перейти обратно: а б Бекингсейл, Дэвид А.; Скогланд, Томас Р.В.; Бурмарк, Джейсон; Хорнунг, Рич; Джонс, Хольгер; Киллиан, Уильям; Кунен, Адам Дж.; Пирс, Ольга; Робинсон, Питер; Рюджин, Брайан С. (ноябрь 2019 г.). «RAJA: Портативная производительность для крупномасштабных научных приложений» . Международный семинар IEEE/ACM по производительности, портативности и производительности в высокопроизводительных вычислениях (P3HPC) 2019 . IEEE. стр. 71–81. дои : 10.1109/P3HPC49587.2019.00012 . ISBN 978-1-7281-6003-0 . ОСТИ 1488819 .
- ^ Хомердинг, Брайан; Варгас, Артуро; Скогланд, Том; Чен, Роберт; Дэвис, Майк; Хорнунг, Рич (8 апреля 2024 г.). «Включение RAJA на графических процессорах Intel с помощью SYCL» . Материалы 12-го международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–10. дои : 10.1145/3648115.3648131 . ISBN 979-8-4007-1790-1 .
- ^ Тим Льюис. "Дом" . ОпенМП . Проверено 10 июля 2024 г.
- ^ «OpenCL — открытый стандарт параллельного программирования гетерогенных систем» . Группа «Хронос» . 21 июля 2013 г. Проверено 12 июля 2024 г.
- ^ Фридман, Ричард. «Справочники» . ОпенМП . Проверено 12 июля 2024 г.
- ^ «Компиляторы и инструменты OpenMP» .
- ^ "std::execution::seq, std::execution::par, std::execution::par_unseq, std::execution::unseq - cppreference.com" . ru.cppreference.com . Проверено 10 июля 2024 г.
- ^ «Ускорение стандартного C++ с помощью графических процессоров с использованием stdpar» . Технический блог NVIDIA . 04.08.2020 . Проверено 10 июля 2024 г.
- ^ Перейти обратно: а б с Алпай, Аксель; Эвелин, Винсент (08 апреля 2024 г.). «AdaptiveCpp Stdpar: стандартный параллелизм C++, интегрированный в компилятор SYCL» . Материалы 12-го международного семинара по OpenCL и SYCL . IWOCL '24. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–12. дои : 10.1145/3648115.3648117 . ISBN 979-8-4007-1790-1 .
Внешние ссылки
[ редактировать ]- Веб-страница Хроноса 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.