Новости про OpenCL и программирование

Intel поддерживает OpenCL

Последний гигант графического рынка присоединился к GPGPU-технологиям…но пока только на центральных процессорах.

Открытый стандарт универсальных вычислений на CPU, GPU и специальных процессорах вроде Cell, OpenCL был принят больше года назад. Серьёзными препятствиями на пути к его всеобщему признанию стали не только проблемы конкретных его реализаций у AMD и NVIDIA, но и неясность позиции третьего крупного игрока на рынке оборудования для вычислений и графики — компании Intel. Последняя неоднократно намекала на возможность неграфического применения своих интегрированных IGP, в основном в области ускорения операций с видео, но отказывалась сообщать что-либо конкретное о подходах к реализации данных функций своего оборудования для программистов. Перед конференцией SC 2010 произошла утечка сведений, что шейдерные ядра будущих IGP процессоров Sandy Bridge будут поддерживать GPGPU, и что в нёдрах Intel вызревает соответствующий SDK для OpenCL.

На днях без лишней помпы Intel представила предварительную версию OpenCL SDK. В неё реализована полная функциональность спецификаций OpenCL 1.1, в том числе:

  • поддержка внеочередного исполнения (out-of-order);
  • поддержка вещественных вычислений с двойной точностью;
  • работа с контекстом OpenCL из OpenGL-приложения, а также совместное использование буферов и памяти текстур между этими API;
  • архитектура ICD драйвера для одновременного присутствия нескольких реализаций OpenCL в системе.

Вместе с тем, имеется небольшой нюанс — на настоящий момент реализована только CPU Target, т. е. исполнение OpenCL с помощью x86 инструкций на центральном процессоре. Что и как будет с интегрированными графическими ядрами — пока чёткого ответа так и нет.

Загрузить SDK и сопроводительную документацию можно с сайта Intel. Для работы требуются Windows Vista или 7, 32- или 64-разрядная версия (но поддерживается работа лишь 32-разрядных OpenCL приложений), а также центральный процессор с поддержкой инструкций SSE 4.1 (то есть на ядре Nehalem или новее). В настоящее время работа поддержки OpenCL от Intel требует отключения других поставщиков OpenCL в системе с помощью правки реестра.

Будем надеяться, что Intel по-настоящему поддержит общий стандарт, тем более, что уже даже графические процессоры в телефонах и КПК в ближайшее время будут обладать такой возможностью.

Khronos Group выпустила спецификации OpenGL 4.1

Khronos Group представила обновленный вариант графического API (Application Programming Interface) OpenGL 2D и 3D , который при сохранении обратной совместимости обеспечивает дополнительные функциональные возможности, а также поддержку OpenGL ES 2.0 API.

Полный список дополнений в OpenGL 4.1 включает в себя:

  • полная совместимость с OpenGL ES 2.0 API для удобства переноса между настольными и мобильными платформами;
  • возможность запроса и загрузки бинарных объектов шейдерных программ для сохранения повторной компиляции;
  • cпособность связывать отдельные программы для программируемых этапов гибкого программирования;
  • 64-битная точность для числ с плавающей точкой в компонентах вершинных шейдеров и материалах для высокой геометрической точности;
  • несколько возможностей создания поверхностей для увеличения гибкости рендеринга;
  • новые ARB расширения;
  • синхронизация OpenGL-объектов с OpenCL-объектами для улучшения совместимости с OpenCL;
  • возможность установить шаблон значений фрагмента шейдеров для повышения гибкости рендеринга;
  • повышение надежности при запуске приложений WebGL;
  • новые механизмы получения расширенных ошибок и предупреждений.

Спецификации OpenGL 4.1 опубликованы и могут быть найдены на официальном сайте.

Окончательные спецификации OpenCL 1.1

Один из лидеров в мире Open Source программирования, Khronos Group сегодня опубликовал спецификации OpenCL 1.1 — первое крупное обновление OpenCL, распространяемое бесплатно.

Версия OpenCL 1.1 добавляет значительные функциональные возможности для расширения возможностей параллельного программирования и привносит в создаваемые приложения больше гибкости, функциональности и производительности, в том числе засчет:

  • новые типы данных, в том числе 3-х компонентные вектора и дополнительные графические форматы;
  • обработка команд из нескольких хостов и использование буфера между несколькими устройствами;
  • операции по отдельным частям буфера в том числе чтение, запись и копирование 1D, 2D или 3D прямоугольных областей;
  • расширенное использование событий и систем управления командами;
  • дополнительные OpenCL C встроенные функции, такие как: integer clamp, shuffle и asynchronous strided copies;
  • улучшенная совместимость с OpenGL на основе эффективного обмена изображениями и буферами для связи OpenCL и OpenGL событий.

Напомню, в рабочую группу OpenCL входят такие известные компании, как: AMD, Apple, Blizzard Activision, Electronic Arts, Ericsson, IBM, Intel, Nokia, S3 Graphics, Sony, STMicroelectronics, Symbian, Texas Instruments и, конечно же, NVIDIA.

Swan — преобразователь программ CUDA в OpenCL

Инструмент для собирающихся переводить имеющиеся GPGPU программы с CUDA на OpenCL.

Консольное приложение Swan позволяет в среде Linux автоматически преобразовать исходный код ядра CUDA-программ в ядро OpenCL. Программа заменяет вызовы функций и создаёт новые точки входа. Также предлагается собственный «абстрактный» API, позволяющий создавать программы, равно легко конвертируемые с помощью Swan в CUDA или OpenCL.

Конечно, программа имеет множество ограничений, пока что не поддерживается работа с несколькими устройствами и конвертация для выполнения CUDA/OpenCL кода на CPU, как и использование возможностей C++ в исходном тексте CUDA-программы. Будем надеяться, что подобные экономящие время инструменты не останутся без развития, благо программа выпущена под GPL и исходный код доступен. Загрузить утилиту можно с официального сайта.