распределённых вычислений
Использование ресурсов 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 в распределенных вычислениях имеет
потенциал для ускорения вычислений, хотя в данной задаче ускорение и не такое
большое.
Примечание
Скачать исходный код программы можно по этой ссылке.
Используемые
источники
- Paul Bourke. Quaternion Julia Fractals.
http://local.wasp.uwa.edu.au/~pbourke/fractals/quatjulia
- Paul Bourke.
Julia Set Fractal (2D).
http://local.wasp.uwa.edu.au/~pbourke/fractals/juliaset
- Paul Bourke.
Julia Set Fractal (2D).
http://local.wasp.uwa.edu.au/~pbourke/fractals/juliaset
- Paul Bourke. Quaternion Maths.
http://local.wasp.uwa.edu.au/~pbourke/other/quaternions
- Keenan Crane. Ray Tracing Quaternion Julia Sets on the
GPU.
http://www.devmaster.net/forums/showthread.php?t=4448
- Phong shading.
http://en.wikipedia.org/wiki/Phong_shading
- 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
- Alchemi –
.NET Grid Computing Framework (дистрибутив).
http://sourceforge.net/projects/alchemi
- Alchemi –
.NET Grid Computing Framework (документация).
http://www.alchemi.net
- General-Purpose
Computation Using Graphics Hardware.
http://www.gpgpu.org