Khronos Group опубликовала предварительные спецификации стандарта вычислений общего назначения с использованием GPU и других процессоров OpenCL 3.0. Эта последняя версия вычислительного API позволяет поставщикам самостоятельно решать, какие функции они будут поддерживать помимо основных спецификаций на базе OpenCL 1.2 2011 года.
По словам представителей Khronos Group, такой подход обеспечит более гибкое развёртывание в целевых средах.
OpenCL 1.2 не поддерживает, к примеру, общую виртуальную память или язык SPIR-V. Это чистый низкоуровневый API, который подходит для параллельных вычислений и в мобильных решениях, и в мощных видеокартах. Его использовали как базовую спецификацию OpenCL 3.0, применив механизм частичного соответствия, что отличает последнюю версию от OpenCL 2.1.
Все функции OpenCL 2.x и OpenCL 3.0 теперь необязательны. Поставщики смогут выбирать определенные наборы для развертывания. Так, производитель однокристальных систем для смартфонов может использовать функцию асинхронных расширений DMA или разделяемой виртуальной памяти, а производитель видеокарт может использовать бо?льшую часть функций OpenCL 2.x, но без поддержки разделяемой виртуальной памяти.
При этом OpenCL 3.0 остается обратно совместимым. Приложения 1.2 будут работать на любом устройстве OpenCL 3.0, как и приложения для OpenCL 2.x, если устройства поддерживают соответствующие функции 2.x. Драйверы OpenCL 1.2 и 2.x придется обновить в соответствии с требованиями 3.x, но основное обновление касается поддержки запросов новых функций.
OpenCL 3.0 включает поддержку асинхронных расширений DMA, чтобы передавать сложные структуры памяти. Эта функция особенно полезна для изображений и данных в виде 2D/3D структур.
Вводится поддержка языка SPIR-V 1.3, и, поскольку именно эта версия является частью спецификации Vulkan 1.1, то взаимодействие между Vulkan и OpenCL должно улучшиться.
Как заявили в Khronos, там надеются, что утвердить стандарт удастся в течение нескольких месяцев. Рабочая группа также обновила Руководство по ресурсам OpenCL, чтобы помочь специалистам по вычислительной технике, разработчикам и исследователям всех уровней квалификации эффективно использовать возможности API.
Стандарт OpenCL развивался в течение последних 15 лет, когда началась эпоха роста вычислений общего назначения на графических процессорах. Созданная Apple открытая среда программирования ГП и других ускорителей вычислений была первой попыткой представления общего открытого API для параллельного программирования. Данный API-интерфейс используется и в проекте Folding@Home. Однако развитие стандарта замедлилось, так как NVIDIA продвигает собственное API CUDA, а Apple переходит на свой API Metal. Основной интерес к OpenCL демонстрирует Intel.
В связи с этим OpenCL 2.2, который был выпущен в 2017 году, так и не получил широкой поддержки, несмотря на то, что он поддерживал C++ в качестве языка ядра.
См. также:
saege5b
Ммммм… т.е. продукция фирмы А, которая умеет ОСЛ 3, будет отличаться от продукции фирмы Н, которая умеет ОСЛ 3, но — иначе. А ещё будет продукция фирмы И, которая умеет ОСЛ 3, но, по своему.
И где тут стандарт?