Открытый
-
История и развитие OpenCL
- OpenCL — это открытый стандарт для параллельного программирования, разработанный Khronos Group.
- Он был создан для замены устаревшего стандарта Open Graphics Library (OpenGL) и стал популярным среди разработчиков игр и профессионального программного обеспечения.
- OpenCL поддерживает различные типы устройств, включая графические процессоры, центральные процессоры и специализированные ускорители.
-
Спецификация OpenCL
- Спецификация OpenCL определяет API для параллельного программирования и включает в себя язык ядра OpenCL C и C++.
- Она включает в себя различные расширения, такие как поддержка векторных типов данных и операций с плавающей запятой.
- OpenCL 2.0 представил общую виртуальную память, вложенный параллелизм и другие улучшения.
- OpenCL 2.1 добавил поддержку SPIR-V и улучшил оптимизацию кода.
- OpenCL 2.2 представил язык ядра OpenCL C++ и новый тип хранилища на стороне устройства.
- OpenCL 3.0 отказался от языка ядра OpenCL C++ в пользу C++ для OpenCL, основанного на компиляторе Clang/LLVM.
-
Реализации OpenCL
- OpenCL состоит из заголовков и общего объекта, которые загружаются во время выполнения.
- Для поддержки OpenCL на различных платформах требуются устанавливаемые клиентские драйверы (ICD).
- Apple, Nvidia, ROCm, RapidMind и Gallium3D используют LLVM и Clang для компиляции кода OpenCL.
-
История внедрения и демонстрации
- OpenCL был представлен на WWDC 2008 и продемонстрирован на SIGGRAPH Asia 2008.
- PowerVR SGX543MP стал первым графическим процессором с поддержкой OpenCL.
- AMD и Havok представили первую рабочую реализацию OpenCL-ускорителя на GDC 2009.
- Nvidia выпустила драйвер OpenCL и SDK в апреле 2009 года.
- Mac OS X Snow Leopard и ATI Stream SDK 2.0 от AMD обеспечили полную реализацию OpenCL.
-
Перспективы и дорожная карта
- OpenCL стремится к интеграции с Vulkan для обеспечения гибкости развертывания программного обеспечения.
- «OpenCL Next» находится в разработке и планируется к выпуску в 2020 году.
-
Реализации с открытым исходным кодом
- OpenCL включает в себя стандартные заголовки и общий объект, которые загружаются во время выполнения.
- Для каждой платформы требуется устанавливаемый клиентский драйвер (ICD).
- Пересказана только часть статьи. Для продолжения перейдите к чтению оригинала.
Полный текст статьи: