OpenCL

OpenCL
логотип OpenCL
Тип GPGPU, API
Автор Apple Inc.
Розробник Khronos Group
Стабільний випуск 2.2 (12 травня 2017; 6 років тому (2017-05-12))
Платформа x86_64, IA-32 і ARM
Операційна система крос-платформовий
Мова програмування C++ і C
Ліцензія безоплатна
Вебсайт www.khronos.org/opencl

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

Посилання

  • Інформація про OpenCL на сайті apple.com/ru/ (рос.)
  • www.khronos.org/opencl [Архівовано 9 серпня 2011 у Wayback Machine.] Офіційна сторінка стандарту (англ.)
  • www.khronos.org/registry/cl/specs/ Сторінка специфікації (англ.)
  • «OpenCL: What you need to know» [Архівовано 13 вересня 2008 у Wayback Machine.], MacWorld, серпень 2008
  • OpenCL-Z: OpenCL Information utility [Архівовано 13 січня 2010 у Wayback Machine.]
  • OpenCL. Что это такое и зачем он нужен? (если есть CUDA). Хабрахабр. 13 жовтня 2009. Архів оригіналу за 20 березня 2017. Процитовано 18 березня 2017. (рос.)
  • OpenCL. Подробности технологии. Хабрахабр. 19 жовтня 2009. Архів оригіналу за 19 березня 2017. Процитовано 18 березня 2017. (рос.)
  • язык параллельных вычислений OpenCL. деньги онлайн. 12 травня 2012. Архів оригіналу за 19 березня 2017. Процитовано 18 березня 2017. (рос.)


PROG Це незавершена стаття про програмування.
Ви можете допомогти проєкту, виправивши або дописавши її.