OpenCL (від ) — фреймворк для створення комп'ютерних програм, пов'язаних з паралельними обчисленнями на різних графічних () і центральних процесорах (). У фреймворк OpenCL входять мова програмування, яка базується на стандарті C99, та прикладний програмний інтерфейс (). OpenCL забезпечує паралельність на рівні інструкцій та на рівні даних і є реалізацією техніки GPGPU. OpenCL — повністю відкритий стандарт, його використання доступне на базі вільних ліцензій.

Мета OpenCL полягає в тому, щоб доповнити OpenGL і OpenAL, які є відкритими галузевими стандартами для тривимірної комп'ютерної графіки і звуку, користуючись можливостями GPU. OpenCL розроблявся і підтримується некомерційним консорціумом Khronos Group, в який входять багато великих компаній, включаючи Apple, AMD, ARM, Intel, nVidia, Qualcomm, Sun Microsystems, Sony Computer Entertainment та інші.

Історія OpenCL був розроблений у компанії Apple Inc. Apple внесла пропозицію по розробці специфікації у комітет Khronos Group. 16 червня 2008 року, Khronos Compute Working Group була сформована з представниками компаній котрі займаються розробкою: CPU, GPU та програмного забезпечення. OpenCL 1.0 Був представлений разом з Mac OS X Snow Leopard 8 червня 2009 року. OpenCL 1.1 Був представлений 14 червня 2010 року OpenCL 1.2 Був представлений 15 листопада 2011 року. Один з проєктів WCG послуговується цим стандартом.

OpenCL 2.0 Був представлений 22 липня 2013 року та стандартизований 18 листопада 2013 року.

Мова

Мова OpenCL виділяється тим, що дозволяє програмам динамічно визначати, які процесори доступні, включаючи багатоядерні центральні процесори і графічні процесори. Це дозволяє розробникам динамічно масштабувати продуктивність своїх програм в залежності від доступного апаратного забезпечення клієнтів.

Мова OpenCL котра використовується для написання ядра (Kernel), частини що буде розпаралелюватися, має особливості: Відсутня підтримка вказівників на функції, рекурсії, бітових полів, масивів змінної довжини, стандартних заголовних файлів. Розширення мови для паралелізму: векторні типи, синхронізація, функції для Work-items/Work-Groups. Модифікатори доступу: __global, __local, __constant, __private.

Див. також CUDA SIMD

Примітки

Посилання Інформація про OpenCL на сайті apple.com/ru/ www.khronos.org/opencl Офіційна сторінка стандарту www.khronos.org/registry/cl/specs/ Сторінка специфікації «OpenCL: What you need to know» , MacWorld, серпень 2008 OpenCL-Z: OpenCL Information utility