Консорциум Khronos завершил процесс стандартизации спецификаций OpenCL 2.0 – открытого и свободного от патентных отчислений стандарта для параллельных вычислений. OpenCL теперь позволяет использовать более широкий спектр алгоритмов для повышения производительности благодаря улучшенной модели выполнения, включения подмножеств C11 и C11++ для моделей памяти, унифицированной синхронизации данных и атомарных операций.
В OpenCL 2.0 внедрено совместное использование виртуальной памяти, позволяя ядрам связанных устройств делиться сложными структурами данных, обладающими указателями (например, древа данных или связанные списки), избегая необходимости контроля над передачей данных, что позволит программисту получить большую гибкость исполнения кода. Вложенный параллелизм предоставляет возможность контролировать отдельные ядра управляемых устройств, минуя управляющее ядро. Таким образом появляется потенциал для более гибкого планирования задач, что позволит разгрузить ресурсы управляющего процессом устройства. Общее адресное пространство позволяет писать функции без указания точного адресного пространства для аргументов, упрощая код. В работе с изображениями улучшено взаимодействие со спецификацией OpenGL, позволяя считывать и записывать информацию в одно и то же изображение. OpenCL теперь поддерживает sRGB-изображения и запись 3D-картинок. Подмножество атомарных и синхронизирующих операций C11 позволяет присваивать объектам флаги видимости для других объектов в рамках рабочей группы или даже среди разных групп, причем даже на разных исполняющих ядрах. В OpenCL наконец реализованы конвейеры, позволяя хранить данные по принципу FIFO. Сам стандарт предоставляет набор функций, с помощью которых можно считывать или записывать данные на конвейере. Кроме того, проведены специальные оптимизации для Android, которые позволяют реализациям OpenCL 2.0 подключаться в качестве общих для всех приложений подключаемых модулей. Впрочем, стоит помнить, что компания Google не очень одобрительно относится к стандарту OpenCL в Android, продвигая альтернативный Renderscript Compute. Впрочем, компания не запрещает своим партнерам реализовывать OpenCL на своих устройствах.
Раз речь зашла о мнении индустрии о новой редакции стандарта гетерогенных вычислений, то Нэйл Треветт, президент Khronos Group и вице-президент NVIDIA по мобильному направлению, заявил, что принятие нового стандарта откроет новые горизонты для различных задач от моделирования компьютерного зрения для дополненной реальности до развитой симуляции физики для мобильных игр. Аль Муни, старший менеджер по продуктам в Adobe Systems, с оптимизмом смотрит на работу Khronos, а инженеры мультимедийного гиганта уже вовсю изучают возможности для повышения производительности OpenCL-вычислений в Premiere Pro. AMD не просто поддерживает начинания Khronos, а является одним из главных разработчиков стандарта, так как в компании уверены, что гетерогенные вычисления уже в ближайшем будущем будут иметь огромное значение. Главными лоббистами мобильной оптимизации OpenCL 2.0 для Android стали члены Open Handset Alliance – Imagination Technologies и Vivante. Первые оптимизируют OpenCL для работы на многоядерных процессорах MIPS и чипах PowerVR, а вторые работают над платформенными оптимизациями для видеоускорителей Vega. Кроме того, свою поддержку новому стандарту выразили в Huawei и HSA Foundation.