Система распределенных вычислений dcs

Информационные технологии Вестник Нижегородского университета им. Н.И. Лоба чевско го, 2011, № 3 (2), с. 308-313

УДК 004.421.2

СИСТЕМА РАСПРЕДЕЛЕННЫХ ВЫЧИСЛЕНИЙ DCS © 2011 г. В.П. Гергель, К.А. Чабан

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

kirill.chaban@gmail.com

Поступила в редакцию 27.01.2011

Представлена система распределенных вычислений Distributed Calculation System. Описано назначение и сфера применения системы. Показаны основные компоненты и схема вычислительной сети DCS. Рассмотрен процесс использования системы на примере решения задачи построения фракталов Julia в пространстве кватернионов и визуализации в трёхмерном пространстве.

Ключевые слова: распределённые вычисления, высокопроизводительные вычисления, utility computing, GRID.

Введение

В настоящее время многие организации имеют в своем распоряжении довольно крупную компьютерную сеть, объединяющую десятки и даже сотни компьютеров. С ростом такой сети все актуальнее становится вопрос об эффективности использования вычислительных ресурсов, которые она объединяет. Зачастую имеющиеся компьютеры загружены не полностью. Поэтому вполне естественно задействовать простаивающие ресурсы для выполнения какой-либо полезной работы - например, использовать их для решения некоторой трудоемкой задачи. Развитие данного направления привело к возникновению концепции utility computing [1].

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

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

В сфере программного обеспечения грид на сегодняшний день доступно множество различных инструментариев для организации распре-

деленных вычислений. В качестве примеров можно привести инструментарии Globus Toolkit [http://www.globus.org], Alchemi .NET Framework [http://www.alchemi.net], X-Com [http://x-com.parallel.ru]. В настоящей работе рассматривается система Distributed Calculation System (DCS), с помощью которой можно организовать распределенную вычислительную среду из имеющихся компьютерных ресурсов. Согласно распространенной классификации данную систему можно отнести к классу инструментариев1 , так как она включает в себя базовые средства разработки распределенных приложений и поддерживает необходимые для их работы операции.

Сегодня наблюдается быстро растущий интерес к технологиям грид со стороны коммерческих предприятий и исследовательских организаций. Операционная система Microsoft Windows широко используется большинством фирм. И для массового распространения грид и распределённых вычислений необходимо разработать инструментарии, поддерживающие данную операционную систему. Это позволило бы эффективно использовать свободную вычислительную мощность настольных компьютеров и рабочих станций посредством создания виртуального вычислительного ресурса, стои-

1 Существующие программные средства грид можно разделить на следующие категории: программные средства, базовые средства грид (инструментарии) и платформы. Такая классификация отражает полноту решения задачи создания и обслуживания грид, поддержки работы пользователей и разработки грид-приложений. Более подробную информацию можно найти на ресурсе http://www.gridclub.ru.

мость которого значительно ниже стоимости Как показано на схеме, Distributed Calcula-традиционных суперкомпьютеров [2-5]. tion System состоит из 3 основных компонент:

Описание системы

Система DCS предназначена для создания распределённой вычислительной сети в соответствии с принципами клиент-серверной архитектуры. Схема связи между основными компонентами инструментария представлена на рис. 1.

DCS Server - центральная часть системы, которая представляет собой ASP.NET Web-сервис, связанный с экземпляром Microsoft SQL Server 2008. Основные функции сервера можно разделить на 2 группы:

1 - Методы для работы клиента администратора

Рис. 1. Схема вычислительной сети DCS

• Добавление вычислительных заданий,

• Получение результатов расчёта,

• Оперативное получение информации о прогрессе расчётов,

• Сбор сведений о предоставленных сервисом вычислительных ресурсах, их активности,

• On-line настройка параметров сервиса,

• Управление ресурсами сервиса.

2 - Методы для работы вычислительного клиента

• Регистрация клиента на сервере,

• Получение части (порции) задания для расчёта,

• Передача частичного результата расчёта на сервис для хранения.

DCS Administration Client - клиент администратора системы. Данное приложение является основным инструментом пользователя при работе с системой.

Можно выделить 3 основные логические модуля данной компоненты вычислительной сети.

Менеджер задач, предназначенный для формирования пакетов вычислительных заданий, отправки их на сервер и последующего получения результатов вычислений. С помощью менеджера производится также удаление заданий и приостановка расчета. Монитор активности вычислительных клиентов. Данный модуль предоставляет сводную информацию об основных параметрах клиентов, подключённых к сервису. С его помощью можно оценить мощность вычислительного ресурса, сформированного с помощью инструментария DCS. Мастер настроек сервиса - служебная утилита, помогающая удалённо изменять настройки сервиса. С её помощью можно осуществлять перезапуск сервиса, удаление информации о клиентах, задачах, а также чтение журнала работы.

DCS Calculation Client - компонента системы, которая организует расчет отдельных порций входных данных с помощью прикладной программы. Клиенты системы DCS отвечают за выполнение следующих действий:

• выполнение вычислений для имеющегося блока (порции) входных данных прикладной задачи,

• запрос новых блоков данных для вычислений от сервера,

• передачу результатов вычислений на сервер.

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

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

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

Generator.exe - генератор аргументов задачи. С помощью данной служебной утилиты реализуется алгоритм декомпозиции входного набора данных на независимые друг от друга части. Данное приложение предназначено для генерации входных параметров вычислительного модуля в зависимости от номера текущей порции задания. Generator.exe реализуется прикладным программистом системы.

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

• Имя задачи,

• Число порций разбиения,

• Краткое описание задачи,

• Максимальный срок выполнения, после которого задание считается отменённым.

Пример использования системы. Описание задачи

Для демонстрации возможностей системы рассмотрим задачу визуализации четырёхмерных фракталов Julia методом трассировки лучей [6].

Фракталы Julia генерируются в 4-мерном пространстве кватернионов с помощью итерационной формулы zn+1 = zn2 + с, где с - какая-либо константа.

Для визуализации в привычное для человека трехмерное пространство осуществляется проекция 4-мерного пространства на трехмерное.

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

Примеры фракталов Julia приведены на рис. 2.

Рис. 2. Примеры фракталов Julia

Рис. 3. Варианты разделения множества пикселей изображения: исходное изображение

и блочная схема

Анализ данных задачи

Вычислительным модулем рассматриваемой задачи является специально подготовленный для визуализации фракталов Julia модуль трассировки лучей. Указанное приложение написано на языке программирования C#. Входными данными его являются визуализируемая сцена, параметры результирующего изображения, а также номер порции, вычисляемой в данный момент.

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

Выбор метода декомпозиции входного набора данных

Важной особенностью выбранной задачи является возможность обработки каждой точки

сцены независимо друг от друга, т.е. данная задача удовлетворяет требованию параллелизма по данным. Для декомпозиции входного набора данных можно использовать различные схемы декомпозиции. Но вычислительная нагрузка будет варьироваться в зависимости от выбора того или иного алгоритма разбиения. Варианты разбиения входного набора данных представлены на рис. 3.

Алгоритм трассировки луча построен таким образом, что он выполняется за довольно малое время, если пущенный в сцену луч не встретил на своём пути ни одного объекта сцены (ни одной точки множества Julia в нашем случае). В этом случае пиксель принимает цвет фона. В противном случае вычисления достаточно трудоёмкие и выполняются значительно дольше. Блочная схема разбиения, показанная на рис. 3в, не способна обеспечить равномерного разделения нагрузки. Некоторые блоки полностью принимают цвет фона, а следовательно, их обработка потребует гораздо меньшего времени, чем тех, которые полностью заполнены точками множества Julia.

Для нашей задачи наиболее эффективной будет ленточная схема разделения, показанная на рис. 3б. Согласно ей мы будем производить декомпозицию на тонкие линии, высота которых вычисляется по формуле: <высота изоб-ражения>/<число порций разбиения>. Затем каждый клиент будет получать для обработки те участки изображения, которые соответствуют уникальному номеру выполняемого задания. Например, при разбиении на 16 порций изображения 512x512 в порцию с порядковым (уникальным) номером 2 будут включены 32, 33, ..., 63 ... линии изображения (нумерация линий начинается с 0).

На этом мы закончим описание тестового приложения и перейдём непосредственно к работе инструментария и, в частности, к подготовке вычислительного задания.

Подготовка вычислительного задания

Выбранный алгоритм декомпозиции входных данных необходимо сообщить системе DCS. Для этого программисту необходимо реализовать вспомогательную утилиту Genera-tor.exe. Данное приложение исполняется каждый раз перед запуском вычислительного модуля непосредственно на вычислительном клиенте системы. В качестве аргументов Generator.exe системой автоматически передаются номер текущей порции и общее число порций задачи. Пользователь может также определить дополнительные параметры, необходимые для адаптации его приложения.

Цель данной программы - выполнить подготовку перед запуском вычислительного модуля на клиентской стороне. Именно эти действия важны разработчику, адаптирующему своё приложение в распределённую среду. Данные, переданные приложением Generator.exe на консоль, будут использованы в качестве входных параметров при запуске вычислительного модуля.

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

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

Формирование задания

После выполнения всех описанных шагов необходимо сформировать задачу для вычисления в системе DCS. Для этого следует восполь-

зоваться приложением DCS Administration Client. Для формирования задания, необходимо выбрать пункт Меню > Добавить задание либо воспользоваться пиктограммой на панели инструментов. На открывшейся форме требуется указать ряд параметров, необходимых для формирования задания.

Прежде всего, необходимо указать системе путь к вычислительному модулю. В рассматриваемом примере это путь к приложению JuliaFractal.exe. Затем следует установить данные генератора аргументов: путь к исполняемому файлу Generator.exe, а также специальные параметры, которыми в нашем случае являются ширина и высота генерируемого изображения.

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

Указанный при формировании задачи приоритет является важнейшим параметром для работы планировщика задач сервера DCS. Задания с наивысшим приоритетом отправляются на обработку вычислительным клиентам в первую очередь.

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

После указания имени задания и его краткого описания можно завершить процесс формирования, нажав кнопку Создать задание. После этого вновь откроется окно клиента администратора системы DCS. При этом в область сформированных задач будет добавлено только что подготовленное задание - «Построение фрактала Julia». Чтобы отправить его на выполнение, следует воспользоваться соответствующей кнопкой на панели инструментов. В результате задание будет добавлено на сервер и автоматически обработано подключенными вычислительными клиентами системы.

Запуск вычислений

Как уже было сказано, все расчеты в рамках системы DCS выполняются вычислительными клиентами. Перед запуском клиента его необходимо сконфигурировать, указав в файле конфигурации DCSClient.exe.config адрес сервера

системы DCS. После выполнения указанных действий клиент готов к работе. Далее необходимо запустить файл DCS Calculation Client.exe и нажать кнопку Начать вычисления. При этом клиентское приложение войдет в цикл, периодически запрашивая у сервера новую порцию для обработки. Поэтому для проведения новых вычислений достаточно добавить новое задание с помощью клиента администратора системы.

Частичные результаты вычислений, полученные после обработки порций задания, сохраняются на сервере DCS. Для передачи их на компьютер пользователя необходимо выбрать соответствующую задачу в клиенте администратора системы, воспользовавшись кнопкой Загрузить результат. При этом частичные результаты будут скачаны с сервера и сохранены в директории с исполняемым файлом клиента администратора. В рассматриваемом примере в директориях, предназначенных для хранения результатов порций задачи (Порция l, Порция 2, ...), будут сохранены файлы resultl.png, result2.png.... «Склеив» полученные изображения один за другим, мы получим требуемый результат - изображение фрактала Julia.

На рис. 4 представлена зависимость времени расчёта фрактала Julia разрешением 2560x2048 от количества вычислительных клиентов.

Число клиентов Время расчёта

1 клиент 23:35

2 клиента 12:45

3 клиента 08:14

4 клиента 06:08

Рис. 4. Результаты эксперимента

Список литературы

1. http ://en. wikipedia. org/wiki/Utility_computing

2. Фостер Я., Кессельман К., Тьюке С. Анатомия грид: создание масштабируемых виртуальных организаций. URL: http://www.gridclub.ru

3. Фостер Я., Кессельман К., Ник Д.М., Тьюке С. Физиология грид: открытая архитектура грид-служб для интеграции распределенных систем. URL: http://www.gridclub.ru

4. Штокингер Х. Определение понятия грид: фиксируем точку зрения экспертов. URL: http:// www.gridclub.ru

5. Джозеф Дж., Эрнест М., Фелленштейн К. Эволюция архитектуры грид-компьютинга и модели адаптации грида. URL: http://www.gridclub.ru

6. http://en.wikipedia.org/wiki/Ray_tracing_(graphics) (дата обращения: 1.09.2010 г.).

DISTRIBUTED COMPUTING SYSTEM

V.P. Gergel, K.A. Chaban

A distributed computing system (DCS) is presented. The purpose and scope of the system are described. Main components and a DCS network scheme are shown. The usage of the system is considered by the example of constructing quaternion (4D) Julia fractals and their visualization in 3D space.

Keywords: distributed computing, high-performance computing, utility computing, GRID.