Кретов Николай Николаевич: Введение в OpenCL

Разработку возглавляет небезызвестная Khronos Group. Та самая, что продвигает OpenGl и OpenAL. Более того, OpenGL и OpenCL по сути из одной программной инфраструктуры и очень тесно могут взаимодействовать.

Суть идеи заключается в том, что нам совершенно без разницы - процессор перед нами или видеокарта. Мы абстрагируемся от платформы как таковой и считаем, что у нас есть N вычислительных устройств. OpenCL как стандарт описывает правила вычислений на этих устройствах. Таким образом мы получаем единый код, который будет абсолютно переносим на любую платформу. AMD или Intel у вас процессор, nVidia или ATI видеокарта, или Blade-сервер с Cell-ядрами - совершенно не важно. Приложение будет работать везде, где устройства поддерживают стандарт OpenCL.

Стоит отметить, что про параллельные вычисления мы говорим про SIMD-инструкции.

OpenCL - это расширение языка C. У нас есть хост-приложение и OpenCL-приложение. Хост подготавливает набор доступных устройств к использованию и передает задачу на выполнение OpenCL-частью. После чего OpenCL отрабатывает и возвращает результат на хост.

OpenCL-код хранится в файлах с расширением *.cl, компилируется в рантайме под заданную архитектуру. За счет этого достигается переносимость приложения.

Apple пошла дальше, выпустив поддержку OpenCL на уровне ядра в своей операционной системе Snow Leopard, добившись тем самым существенного увеличения производительности.

Для чего нужен?

OpenCL хорошо кушает SIMD-алгоритмы. Он для этого и создан. А это различная криптография, различные post-processing эффекты, обработка звука и различных математических моделей, кодирование видео.

Для разработчиков

На данный момент доступны версии nVidia OpenCL SDK, AMD OpenCL SDK. Вы всегда можете их скачать с официальных сайтов данных компаний.

В дальнейших статьях я расскажу как использовать данную технологию на практике в ваших собственных приложениях.

Кретов Н.Н. 2014г.