Нижегородский государственный университет им.Н.И.Лобачевского.

ЛАБОРАТОРИЯ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

Факультет вычислительной математики и кибернетики

Лаборатория ITLabИсследованияПроекты 2003-2009 гг.Учебно-исследовательские проектыИспользование ресурсов GPU для выполнения распределённых вычислений Switch to English version  
Новости
О Лаборатории
Обучение
Исследования
Проекты 2011 г.
Проекты 2010 г.
Проекты 2003-2009 гг.
Образовательные комплексы
Семинар Лаборатории
Мероприятия
Вакансии Интел
Сотрудничество
Разработчики сайта
О нас пишут
Летняя школа 2011
Видео лекции
Клуб У.М.Н.И.К.
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Использование ресурсов GPU для выполнения

распределённых вычислений

 

Использование ресурсов GPU для выполнения распределённых вычислений

Багаутдинов Т.А., Чабан К.А., Боголепов Д.К.

 

Основная идея метакомпьютинга состоит в использовании независимых компьютеров, объединенных в сеть, как будто они являются одной большой параллельной машиной или виртуальным суперкомпьютером. Эта идея имеет ряд преимуществ, к которым относится, например, низкая стоимость суммарных вычислительных ресурсов.

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

Сегодня наблюдается быстро растущий интерес к технологиям грид как со стороны научных исследователей, так и со стороны коммерческих предприятий. Как следствие, сегодня предлагается множество систем для организации распределенных вычислений, которые реализуют определенные концепции грид. К их числу можно отнести такие инструментарии, как Alchemi .NET Framework [http://www.alchemi.net], NGrid [http://ngrid.sourceforge.net], X-Com [http://x-com.parallel.ru], проект XtermWeb [http://www.xtremwebch.net]. Характерной особенностью перечисленных систем является возможность быстрой и простой организации вычислений в имеющейся компьютерной сети, а основная их задача – повышение эффективности использования доступных ресурсов.

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

 

Описание экспериментальной задачи

 

В качестве демонстрации данного подхода была выбрана задача визуализации четырехмерных фракталов Джулии (quaternion Julia sets) [1] - [4]. Данный фрактал является обобщением комплексного фрактала Джулии на случай пространства кватернионов и строится по следующей формуле: zn+1 = zn2 + c. Для визуализации данных множеств хорошо подходит классическая техника трассировки лучей [5]. Примеры полученных изображений:

Рисунок 1. c = (-0,1620,  0,1630, 0,5600,  -0,5990)

Рисунок 2. c = (-0,8000,  0,2000, 0,3000, 0,0000)

           

 

Метод визуализации заключается в том, что для каждого пикселя экрана (исходя из положения и ориентации наблюдателя) генерируется луч (первичный луч), после чего отслеживается его траектория и точка соударения с фракталом. Если соударения нет, то пиксель закрашивается цветом фона (в нашем случае это черный цвет). Если же соударение имеет место, то производится расчет цвета пикселя на основе стандартной модели освещения Фонга [6].

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

 

Использованные инструменты

 

Для CPU версии использовалась платформа .NET Framework 2.0 и язык программирования C#, для GPU версии – графическое API OpenGl 2.0 и язык программирования шейдеров GLSL.

Также для организации распределенных вычислений использовался инструментарий Alchemi .NET Framework [http://www.alchemi.net].

 

Тестирование и результаты

 

Тестирование проводилось на 5 машинах, объединенных в локальную сеть и оснащенных процессорами Core 2 Duo E6550 2.33 MHz и графическими ускорителями NVidia GeForce 8800 GTS 320 MB. Размер изображения: 1280 x 1280.

Число порций

CPU

GPU

Время (м:с:м)

Ускорение

Время (м:с:м)

Ускорение

1

10:44:00

1

0:09:05

1

2

6:32:00

1.64

0:06:23

1.45

3

4:15:00

2.52

0:06:14

1.47

4

3:19:00

3.23

0:05:85

1.55

5

2:48:00

3.83

0:05:34

1.69

 

 

 

Выводы

 

Из результатов тестирования видно, что можно выделить класс вычислительных задач общего назначения, в которых графический ускоритель в десятки раз опережает центральный процессор. Также следует отметить, что использование нескольких GPU в распределенных вычислениях имеет потенциал для ускорения вычислений, хотя в данной задаче ускорение и не такое большое.

 

Примечание

 

Скачать исходный код программы можно по этой ссылке.

 

Используемые источники

 

  1. Paul Bourke. Quaternion Julia Fractals.

http://local.wasp.uwa.edu.au/~pbourke/fractals/quatjulia

  1. Paul Bourke. Julia Set Fractal (2D).

http://local.wasp.uwa.edu.au/~pbourke/fractals/juliaset

  1. Paul Bourke. Julia Set Fractal (2D).

http://local.wasp.uwa.edu.au/~pbourke/fractals/juliaset

  1. Paul Bourke. Quaternion Maths.

http://local.wasp.uwa.edu.au/~pbourke/other/quaternions

  1. Keenan Crane. Ray Tracing Quaternion Julia Sets on the GPU.

http://www.devmaster.net/forums/showthread.php?t=4448

  1. Phong shading.

http://en.wikipedia.org/wiki/Phong_shading  

  1. Hart, J. C., Sandin, D. J., and Kauffman, L. H. 1989. Ray tracing deterministic 3D fractals.

http://graphics.cs.uiuc.edu/~jch/papers/rtqjs.pdf

  1. Alchemi – .NET Grid Computing Framework (дистрибутив).

http://sourceforge.net/projects/alchemi

  1. Alchemi – .NET Grid Computing Framework (документация).

http://www.alchemi.net  

  1. General-Purpose Computation Using Graphics Hardware.

http://www.gpgpu.org  

Новости

14.11.2015
16.10.2015
16.10.2015
14.10.2015
20.09.2015

© ITLab, Нижний Новгород,  2009