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

  Опросы
  Статьи

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

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

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

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

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

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

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

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

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

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

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

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

Принципы проектирования  

Dependency Inversion Principle. Принцип инверсии зависимостей в разработке

Мы подошли к последнему принципу проектирования приложений из серии SOLID – Dependency

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

Рынок труда  

Вакансия: Администратор 1С

Администратор 1С – это специалист, который необходим любой организации, где установлены программы

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

Книжная полка  

Книги для профессионалов, студентов и пользователей

Книги издательства «БХВ» вышли книги для тех, кто хочет овладеть самыми востребованными

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

Принципы проектирования  

Interface Segregation Principle. Принцип разделения интерфейсов в проектировании приложений

Эта статья из серии «SOLID» посвящена четвертому принципу проектирования приложений – Interface

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 10697
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 8944
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 8979
Комментарии: 0
Конкурентное программирование на SCALA

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

19.03.2018г.
Просмотров: 5668
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

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

12.03.2018г.
Просмотров: 6358
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

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

12.03.2018г.
Просмотров: 3663
Комментарии: 0
Глубокое обучение с точки зрения практика

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

12.03.2018г.
Просмотров: 2655
Комментарии: 0
Изучаем pandas

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

12.03.2018г.
Просмотров: 3466
Комментарии: 0
Программирование на языке Rust (Цветное издание)

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

19.12.2017г.
Просмотров: 3458
Комментарии: 0
Глубокое обучение

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

19.12.2017г.
Просмотров: 5951
Комментарии: 0
Анализ социальных медиа на Python

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

Друзья сайта  

 Компьютерная графика на основе 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