Компания Kronos Group объявила о ратификации и публичном релизе OpenCL 2.0 и его финальной спецификации. OpenCL 2.0 является существенным эволюционным шагом вперед для открытого и свободно распространяемого стандарта, который упрощает кросс-платформенное и параллельное программирование.
С улучшенной моделью выполнения и подразделом с поддержкой моделей памяти C11 и C++11, синхронизацией и атомарными операциями, новый OpenCL позволяет использовать значительно больший круг алгоритмов и программных шаблонов, которые будут автоматически оптимизированы и их производительность будет увеличена. Был получен и обработан значительный объем обратной связи от сообщества разработчиков – результат предварительной версии, выпущенной в июле.
«Kronos получила большой объем полезной обратной связи от разработчиков после выхода предварительной версии OpenCL 2.0, большая часть которой была переработана и усвоена, или же будет усвоена в будущем, ведь эта платформа для параллельного программирования, являясь своеобразным произведением искусства, продолжает развиваться», - говорит Нил Тревет (Neil Trevett), председатель рабочей группы OpenCL, президент Khronos Group и вице-президент мобильного подразделения NVIDIA. «OpenCL продолжает набирать обороты в сегменте
настольных компьютеров, мобильных и встраиваемых устройств. Он предоставляет единое программное окружение для динамического баланса различных процессорных, графических и других аппаратных ресурсов мобильных систем-на-чипе для поддержки продвинутых сценариев использования, начиная с обработки видео для виртуальной реальности и заканчивая симуляцией физики в мобильных играх».
Обновления и новые возможности OpenCL 2.0 включают:
Общая Виртуальная Память
Хост и kernel-устройства могут напрямую обмениваться сложными структурами данных с указателями, такими как деревья и связанные списки, что обеспечивает гибкость в программировании и снимает необходимость длительного переноса данных между хостом и устройствами.
Встроенный параллелизм
Kernel-устройства могут ставить в очередь kernel-команды к одному и тому же устройству без обращения к хосту, что позволяет реализовывать парадигмы гибкого рабочего расписания и избежать ненужного переноса исполняемых команд и данных от хоста к устройствам и обратно. В результате, значительно разгружаются ресурсы процессора хоста.
Объединенное адресное пространство
При написании функций теперь не обязательно указывать именованное адресное пространство для переменных, что особенно полезно для тех переменных, которые объявляются как указатели. Благодаря такому решению, устраняется необходимость писать множество функций для каждого из именованных адресных пространств приложения.
Изображения
Улучшена поддержка изображений. В том числе, реализована поддержка изображений типа sRGB и 3D, возможность одновременной записи и чтения из одного и того же изображения, а также возможность создавать OpenCL изображения из
многоуровневых или мультисэмплинговых OpenCL текстур для улучшения отображения.
Подраздел C11 Atomics
Подраздел команд и операций синхронизации C11 Atomics позволяет сделать задачу одного рабочего объекта видимой для других рабочих объектов его рабочей группы, для разных рабочих групп, выполняемых на устройстве, или же для обмена данными между устройством OpenCL и хостом.
Объекты памяти типа "Трубы"
Трубы – это объекты памяти, которые хранят данные по принципу FIFO, а OpenCL предоставляет встроенные возможности для OpenCL функций по записи и чтению из таких объектов, обеспечивая простое создание структур данных с использованием труб, которые могут быть хорошо оптимизированы средствами OpenCL.
Клиентские драйвера-расширения, устанавливаемые в Android
Позволяет инструментам OpenCL определять себя и загружаться в память как общий объект в системе Android.
Поддержка со стороны производителей
«Внедрение в программный пакет Premiere Pro стандарта OpenCL снискало широкую поддержку у наших клиентов, обеспечивая значительное улучшение производительности, и позволяя редактировать контент и создавать его в реальном времени. Мы позитивно настроены относительно внедрения технологических инноваций, реализованных в OpenCL 2.0, и с нетерпением ожидаем возможности улучшить производительность еще больше», - сказал Ал Муни (Al Mooney), старший менеджер по продуктам, отдел редакторов мультимедии, Adobe.
«OpenCL от Khronos Group является первым ключом, фундаментом, языком программирования, который действительно поддерживает ключевые особенности HAS устройств. Будет интересно посмотреть на то, что смогут сделать разработчики с такой богатой на возможности программной платформой», - сказал Грэгори Стоунер (Gregory Stoner), управляющий директор и вице-президент HSA Foundation.
«Впечатляет то, что OpenCL обеспечивает поддержку все большего и большего числа разнообразных гетерогенных вычислительных устройств», - сказал Женя Ли (Zhenya Li), вице-президент в 2012 Lab, Huawei Technologies. «Мы ожидаем, что стандарт OpenCL будет широко востребован сектором информационных и коммуникационных технологий (ИКТ), а также то, что этот стандарт станет ключевым при внедрении виртуализации сетевых функций. Huawei станет активным участником в развитии OpenCL и поможет предоставить легкую в использовании платформу для разработчиков для создания виртуализированных ИКТ приложений».
«Как давний член группы Khronos и один из ведущих создателей стандарта OpenCL, компания Imagination восхищена тем, что Khronos продолжает создавать стандарты, упрощающие использование вычислений на основе графических процессоров для разработчиков. Используя широкую базу наших собственных разработок, включающую процессоры PowerVR и MIPS, клиенты создают инновационные проекты для мобильных устройств, конечных пользователей, автомобильной индустрии и других устройств. Вычисления на графических картах – ключ к созданию новых приложений в рамках ограничений теплового пакета для нынешних устройств следующего поколения», - сказал Питэр МакГиннес (Peter McGuinness), директор отдела по маркетингу мультимедиа технологий, Imagination Technologies.
«Мы положительно удивлены тем, какие выгоды предоставляют конечному пользователю новые особенности OpenCL 2.0», - сказал Симон МакИнтош-Смит (Simon McIntosh-Smith), глава Microelectronics Research Group в University of Bristol. «Последняя редакция OpenCL позволит нам эффективно решать значительно больший круг задач параллельного вычисления, чем когда-либо раньше, причем для множества встраиваемых и других аппаратных платформ. Внедрение общей виртуальной памяти облегчит разработку гетерогенных параллельных программ, а поддержка динамического параллелизма сделает возможным создание более эффективных решений для широкого круга приложений».
«
Vivante с удовольствием осуществляет поддержку OpenCL 2.0. Последний индустриальный стандарт позволит расширить применение технологий в различных областях: мобильной, области домашних развлечений и автомобильной продукции, создавая тем самым целую волну ранее неизвестных сценариев использования инновационных вычислений», - сказал Вэй-Джин Дай (Wei-Jin Dai), президент и исполнительный директор компании Vivante. «Так как экосистема OpenCL быстро растет, а на рынке появляется больше и больше приложений, системы-на-чипе, в которых используются наши графические карты Vega, будут готовы к поддержке новой спецификации 2.0 и использованию преимуществ оптимизации на уровне платформы, встроенной в нашу архитектуру».