2020/05/27 16:11:15

Стандарт параллельного программирования OpenCL 3.0: новые функции и поддерживаемые устройства


27 апреля 2020 года на мероприятии International Workshop on OpenCL консорциум Khoronos Grop представил предварительные спецификации стандарта OpenCL™ 3.0.

OpenCL (Open Computing Language) - это открытый, не требующий лицензионных отчислений стандарт для кроссплатформенного параллельного программирования различных ускорителей, которые можно найти в суперкомпьютерах, облачных серверах, персональных компьютерах, мобильных устройствах и встроенных платформах. Предыдущая версия стандарта - OpenCL 2.1 - была представлена в марте 2015 года.

За счет использования параллельных вычислений можно существенно повысить скорость работы и отклика широкого спектра приложений во многих сегментах рынка, включая профессиональные инструменты для творчества, научное и медицинское программное обеспечение, обработку машинного зрения, а также обучение и работу нейросетей. Также практическими примерами проблем, которые можно решать с помощью технологий параллельных вычислений, являются: вычислительная химия, Data Science, биоинформатика, моделирование потоков жидкостей и газов, предсказание погоды.

Стандарт OpenCL широко используется компаниями во многих сегментах рынка: создание контента, машинное обучение, в промышленных вычислениях

Разработкой стандарта занимается Khronos Group - промышленный консорциум, целью которого является выработка открытых стандартов интерфейсов программирования (API) в области создания и воспроизведения динамической графики и звука на широком спектре платформ и устройств с поддержкой аппаратного ускорения. В него входят более 100 компаний, в числе которых AMD, Apple, ARM, Google, Intel, Nvidia и другие.

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

«
OpenCL 3.0 является важным шагом вперед в стремлении обеспечить более высокую производительность и инновации в расширяющемся диапазоне вычислительных платформ и приложений.
пишет в Twitter Баладжи Калидас (Balaji Calidas), директор по разработкам в Qualcomm.
»

Изменения, которые включены в новую версию стандарта, главным образом служат тому, чтобы API мог использоваться для работы с новыми типа «железа», такими как FPGA, специализированные процессоры для встраиваемых систем, процессоры мобильных устройств, системы граничных вычислений (когда обработка данных происходит непосредственно на IoT устройствах), что может быть полезным, к примеру в робототехнике, автоматизированных производственных линиях, при массивно-распределённой аналитике. Более ранние версии стандарта в основном ориентировались на центральные процессоры и дискретные видеокарты.

Вычисления OpenCL могут выполняться на CPU, графических процессорах, большом спектре специализированных микросхем

Новыми решениями, включенными в OpenCL 3.0, стали поддержка асинхронных расширений DMA (Direct Memory Access), для передачи сложных структур памяти, например изображений и 2D/3D структур. Дополнительно введена поддержка языка SPIR-V 1.3 (промежуточный язык для параллельных вычислений и графики, разработанный Khronos Group), что позволит повысить взаимодействия между OpenCL и API Vulkan (интерфейс прикладного программирования для 2D, 3D графики от Khronos Group).

OpenCL 3.0 разработан таким образом, чтобы полностью совместимым только со спецификациями OpenCL 1.2, все остальные функции становятся необязательными. Все функции OpenCL 2.X согласованно определены в новой унифицированной спецификации, и текущие реализации OpenCL 2.X, которые обновляются до OpenCL 3.0, могут продолжать поставлять свои существующие функциональные возможности с полной обратной совместимостью.

«
Многие наши клиенты хотят использовать язык программирования GPU, который работает на всех устройствах, и с ростом развертывания в системах граничных вычислений и мобильных устройствах эта потребность увеличивается. OpenCL - единственное решение для доступа к разнообразному кремниевому ускорению, и многие ключевые программные стеки используют OpenCL/SPIR-V в качестве бэкэнда. Мы очень рады, что OpenCL 3.0 будет способствовать еще более широкому внедрению в отрасли, поскольку он убеждает наших клиентов в том, что их прошлые и будущие инвестиции в OpenCL оправданы.
сказал Винсент Хиндриксен (Vincent Hindriksen), основатель и генеральный директор Stream HPC.
»

Новое поколение стандарта имеет совместимость как с предыдущими поколениями, так и с другими стандартами и языками
«
OpenCL - наиболее распространенный открытый стандарт для гетерогенного параллельного программирования низкого уровня, который широко используется в приложениях, библиотеках, механизмах и компиляторах, которым необходимо охватить самые разные процессоры. OpenCL 2.X обеспечивает значительную функциональность, но OpenCL 1.2 зарекомендовал себя как базовый уровень, необходимый всем поставщикам и рынкам. OpenCL 3.0 интегрирует жестко организованную опциональность в монолитную спецификацию 2.2, повышая гибкость развертывания, что позволит OpenCL поднять планку по повсеместно доступной функциональности в будущих спецификациях ядра.
сказал Нил Треветт, вице-президент NVIDIA, президент Khronos Group и председатель рабочей группы OpenCL в пресс-релизе.
»

OpenCL может применяться вместе с высокоуровневыми API, что может упростить разработку

После выпуска спецификаций OpenCL 3.0 в Khronos Group в течении нескольких месяцев будут собирать предложения участников рынка, по изменениям, которые можно добавить в данную среду разработки, после этого будут выпущены окончательные спецификации. В консорциуме надеются на поддержку нового стандарта игроками рынка.

«
Intel решительно поддерживает кросс-архитектурные стандарты, действующие в вычислительной экосистеме, такие как OpenCL 3.0 и SYCL. Основанные на стандартах унифицированные модели программирования позволят нашим разработчикам повысить эффективность и проявить креативность в предстоящем выпуске нашей новой архитектуры Xe GPU.
сказал Джефф МакВей (Jeff McVeigh), вице-президент Intel по архитектуре, графике и программному обеспечению.
»