Группа компаний Khronos анонсировала OpenCL 3.0, последнюю версию своей открытой платформы для программирования графических процессоров и других вычислительных ускорителей.
OpenCL изначально был разработан Apple и нацелен на создание общего API для параллельного программирования. Он использовался для широкого спектра целей-от встроенных процессоров и DSP до мощных графических процессоров. Однако его популярность уже не так высока, как раньше. Apple перешла на свой собственный металлический API, а Nvidia использует свой собственный API CUDA.
Возможно, в связи с этим основные изменения в последней версии заключаются в удалении функций в надежде, что новая версия будет более широко принята.
Хронос говорит, что:
«чтобы удовлетворить растущее разнообразие устройств OpenCL, OpenCL 3.0 делает все функции, выходящие за рамки версии 1.2, необязательными.»
Все приложения OpenCL 1.2 будут продолжать работать без изменений на любом устройстве OpenCL 3.0. Все функции OpenCL 2.X согласованно определены в новой унифицированной спецификации, и текущие реализации OpenCL 2.X, обновленные до OpenCL 3.0, могут продолжать поставляться с их существующей функциональностью с полной обратной совместимостью. Все функции API OpenCL 2.X могут быть запрошены, а OpenCL C 3.0 добавляет макросы для запроса дополнительных языковых функций. Это означает, что поставщикам больше не придется поддерживать каждую функцию OpenCL, поэтому, если есть некоторые функции, которые не имеют отношения к их платформе, они могут просто игнорировать их.
Хронос говорит, что он»перестраивает дорожную карту OpenCL, чтобы обеспечить широкое развертывание требуемых разработчиками функций поставщиками оборудования». OpenCL 3.также интегрирует функциональность подгрупп в базовую спецификацию, поставляется с новой спецификацией языка OpenCL C 3.0, использует новый унифицированный формат спецификации и вводит расширения для асинхронных копий данных, чтобы включить новый класс встроенных процессоров.
Для разработки ядра C++ Рабочая группа OpenCL перешла от исходного языка ядра OpenCL C++, определенного в OpenCL 2.2, к сообществу «C++ для OpenCL», проекту с открытым исходным кодом, поддерживаемому Clang. C++ для OpenCL обеспечивает совместимость с OpenCL C, позволяет разработчикам использовать большинство функций C++17 в ядрах OpenCL и совместим с любой реализацией OpenCL 2.X или OpenCL 3.0, которая поддерживает проглатывание SPIR-V™.