Компьютерная графика на основе OpenGL. Часть 5. Использование OpenCL::Журнал СА 12.2013
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1322
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1426
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1099
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 850
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1438
Комментарии: 0
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Компьютерная графика на основе OpenGL. Часть 5. Использование OpenCL

Архив номеров / 2013 / Выпуск №12 (133) / Компьютерная графика на основе OpenGL. Часть 5. Использование OpenCL

Рубрика: Разработка /  Графика

Алексей Верижников АЛЕКСЕЙ ВЕРИЖНИКОВ, системный архитектор в филиале ЗАО «Корпорация ГРИНН», г. Орел, туристический многофункциональный комплекс «ГРИНН», mail_aw@mail.ru

Компьютерная графика на основе OpenGL
Часть 5. Использование OpenCL

Расскажем о возможности использования ресурсов видеосистемы компьютера не только для обработки компьютерной графики, но и для других задач

Пример таких задач – системы моделирования взаимодействий: моделирование погоды, астрономические вычисления, взаимодействие атомов при химических реакциях, биологические процессы и т.д. Рядовому пользователю ПК эта технология пригодится для более быстрой обработки видео- и аудиоинформации, ну и, конечно, в играх.

OpenGL как система, использующая конечный автомат для обработки задач, по своей сути, является линейной. Технология OpenCL создана для работы с параллельными вычислениями. Рассмотрим некоторые аспекты многозадачности и возникающие при этом проблемы, а также их преимущество перед последовательно выполняемыми процессами.

Что такое OpenCL?

Название OpenCL похоже на OpenGL, отличается лишь одной буквой. OpenCL можно расшифровать как Open Computing Language, что переводится на русский как «Открытый язык вычислений». Похожая технология разрабатывалась NVIDIA для своих продуктов, и назвали ее CUDA. Чтобы заново не переделывать уже имеющуюся базу, была сделана надстройка для CUDA для возможности обработки команд OpenCL. То есть программы, написанные на OpenCL, в процессе компиляции переводятся в код для CUDA и затем выполняются. Возникает резонный вопрос: зачем это нужно – CUDA, OpenCL?

Понятно, что ресурсы ЦПУ компьютера конечны, поэтому для разгрузки и ускорения работы используются мощности дополнительных устройств, например, видеокарты.

Как же ускоряется работа программы? Для этого посмотрим на структурную схему видеокарты (см. рис. 1). Помимо GPU, там имеются конвейерные процессорные элементы, которые отвечают за обработку пиксельных и вершинных шейдеров. Считается, что чем больше этих процессорных элементов, тем мощнее видеокарта. Конечно же, первичные и самые важные параметры – это частоты GPU и работы памяти, но уже сейчас принимаются во внимание частота работы шейдерного конвейера и количество процессорных элементов.

Почему я называю их именно «процессорные элементы», а не «процессоры»? Дело в том, что набор команд каждого процессорного элемента не очень большой и гораздо меньше набора команд ЦПУ. В последнее время получили распространение унифицированные шейдерные конвейеры, у которых набор команд одинаков и позволяет проводить операции как с пиксельными, так и с вершинными программами или шейдерами. Ускорение достигается за счет параллельного выполнения определенной простой команды. То есть за такт времени выполняется сразу несколько команд, по количеству теоретически равные числу процессорных элементов. OpenCL, по сути, является языком для этих команд.

На данный момент все новые ресурсоемкие системы (например, программы для моделирования химических процессов, системы расчета погодных явлений, перекодировщики видео и т.д.) основаны на технологии CUDA от NVIDIA. Но OpenCL развивается быстрыми темпами. Уже готова спецификация OpenCL 2.0, но нет пока в продаже устройств, которые ее поддерживают.

Когда и зачем это придумали?

Сейчас OpenCL и CUDA – новые развивающиеся технологии, но, как часто бывает, «новое – это хорошо забытое старое». Многопроцессорные параллельные вычисления были придуманы на заре процессорной эпохи.

В 1975 году один из руководителей компании CDC Seymour Cray (Сеймур Крей), организовавший собственную фирму, известную под названием Cray-1, один из первых продемонстрировал конвейерный компьютер с быстродействием, превосходящим 150 млн операций в секунду или 150 МГц.

У него было 12 конвейеров с множеством регистров и процессорных элементов по обработке команд. Так как время на такт обработки команды составляло 12,5 нс (80 МГц) и более (ну не могли еще тогда делать быстрее), то, чтобы быстро выполнять необходимые задачи, их надо было распараллеливать. Теоретически суммарная частота работы должна быть 12 х 80 = 960 МГц.

К заслуге инженеров и программистов, они смогли получить среднюю частоту работы около 150 МГц. Читатель может сказать, что сейчас считается уже мощность в гигагерцах и калькулятор работает быстрее. Это, конечно же, так. И тем не менее.

Теоретически увеличивать частоту работы можно до уровней, сравнимых с уровнями частот колебаний световой волны. Сегодня, по моему мнению, транзисторная полупроводниковая технология дошла до отметки 7 ГГц (частота обработки команд) и далее сможет расти уже с чрезвычайно большими усилиями.

В скором будущем ожидается новая технология, которая должна значительно увеличивать частоты выполнения команд. А уже сейчас сложность задач только увеличивается как по ресурсоемкости, так и по мощности необходимого оборудования для их выполнения. Соответственно если нельзя сделать быстрее один процессор, то приходится распараллеливать задачи на несколько процессоров с определенной конечной частотой.

Ранее, когда я рассказывал об одном из первых суперкомпьютеров, прослеживается аналогия с нашим вопросом. По сути, та же самая проблема нехватки мощности отдельного процессора, только там все в мегагерцах, а сейчас в гигагерцах. Вот для решения этой проблемы и начали активно работать над OpenCL.

Рисунок 1. Структурная схема видеокарты

Рисунок 1. Структурная схема видеокарты

Описание технологии OpenCL

Драйвер технологии OpenCL создает абстракцию работы с аппаратными возможностями устройства, в нашем случае – видеокартой. Саму программу можно разделить на две части.

  • Первая – код для инициализации устройства, на котором будут производиться вычисления, также создание и выделение областей обрабатываемой памяти, отправка в память GPU и получения итоговых результатов.
  • Вторая – программный код, который будет выполняться на GPU.

Статью целиком читайте в журнале «Системный администратор», №12 за 2013 г. на страницах 53-57.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru