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

OpenCL
логотип OpenCL
ТипGPGPU, API
АвторApple Inc.
РозробникKhronos Group
Стабільний випуск2.2 (12 травня 2017; 7 років тому (2017-05-12))
Платформа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 року. Один з проєктів WCG послуговується цим стандартом.[1]

OpenCL 2.0

ред.

Був представлений 22 липня 2013 року[2] та стандартизований 18 листопада 2013 року[3].

Мова

ред.

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

Мова OpenCL котра використовується для написання ядра (Kernel), частини що буде розпаралелюватися, має особливості:

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

Див. також

ред.

Примітки

ред.
  1. Help. www.worldcommunitygrid.org. Процитовано 12 вересня 2022.
  2. Khronos Releases OpenCL 2.0. khronos.org. Архів оригіналу за 17 серпня 2013. Процитовано 4 лютого 2014.
  3. Khronos Finalizes OpenCL 2.0 Specification for Heterogeneous Computing. Khronos Group. Архів оригіналу за 11 листопада 2020. Процитовано 4 лютого 2014.
  4. OpenCL: допомагаючи розробникам розмовляти однією мовою. Архів оригіналу за 1 липня 2013. Процитовано 27 листопада 2009. (рос.)

Посилання

ред.