OpenCL
OpenCL (від англ. Open Computing Language) — фреймворк для створення комп'ютерних програм, пов'язаних з паралельними обчисленнями на різних графічних (англ. GPU) і центральних процесорах (англ. CPU). У фреймворк OpenCL входять мова програмування, яка базується на стандарті C99, та прикладний програмний інтерфейс (англ. API). OpenCL забезпечує паралельність на рівні інструкцій та на рівні даних і є реалізацією техніки GPGPU. OpenCL — повністю відкритий стандарт, його використання доступне на базі вільних ліцензій.
![]() | |
![]() | |
Тип | GPGPU, API |
---|---|
Автор(и) | Apple Inc. |
Розробник | Khronos Group |
Стабільний випуск | 2.2 (12 травня 2017 ) |
Версії | 3.0 (30 вересня 2020)[1] |
Платформа | x86_64, IA-32 і ARM |
Операційна система | крос-платформовий |
Мова програмування | C і C++ |
Ліцензія | безоплатна |
Вебсайт | www.khronos.org/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 року
Мова
Мова OpenCL виділяється тим, що дозволяє програмам динамічно визначати, які процесори доступні, включаючи багатоядерні центральні процесори і графічні процесори. Це дозволяє розробникам динамічно масштабувати продуктивність своїх програм в залежності від доступного апаратного забезпечення клієнтів.[4]
Мова OpenCL котра використовується для написання ядра (Kernel), частини що буде розпаралелюватися, має особливості:
- Відсутня підтримка вказівників на функції, рекурсії, бітових полів, масивів змінної довжини, стандартних заголовних файлів.
- Розширення мови для паралелізму: векторні типи, синхронізація, функції для Work-items/Work-Groups.
- Модифікатори доступу: __global, __local, __constant, __private.
Примітки
- https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html — 2020.
- Khronos Releases OpenCL 2.0. khronos.org.
- Khronos Finalizes OpenCL 2.0 Specification for Heterogeneous Computing. Khronos Group.
- OpenCL: допомагаючи розробникам розмовляти однією мовою. Архів оригіналу за 1 липня 2013. Процитовано 27 листопада 2009. (рос.)
Посилання
- Інформація про 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
- OpenCL. Что это такое и зачем он нужен? (если есть CUDA). Хабрахабр. 13 жовтня 2009. (рос.)
- OpenCL. Подробности технологии. Хабрахабр. 19 жовтня 2009. (рос.)
- язык параллельных вычислений OpenCL. деньги онлайн. 12 травня 2012. (рос.)