Сидоров И.А., Опарин Г.А., Феоктистов А.Г. УДК 519.6+004.273
ТЕХНОЛОГИЯ ОРГАНИЗАЦИИ РАСПРЕДЕЛЕННЫХ ВЫЧИСЛЕНИЙ В ИНСТРУМЕНТАЛЬНОМ КОМПЛЕКСЕ DISCOMP1
Введение. Развитие технологий параллельного программирования привело к существенным изменениям архитектуры пакетов прикладных программ и, как следствие, к появлению новых требований к средствам описания и обработки схем решения задач со стороны конечных пользователей этих пакетов. Современные пакеты прикладных программ, зачастую, разрабатываются для работы в распределенной вычислительной среде (РВС). Такая среда состоит из вычислительных узлов, объединенных коммуникационной сетью. Вычислительный узел представляет собой программно-аппаратный ресурс, включающий модуль оперативной памяти, один или несколько процессоров, жесткий диск и системное программное обеспечение (комплекс программных средств, поддерживающих функционирование узла в РВС). Один из вычислительных узлов назначается главным узлом и наделяется функциями управления заданиями пользователей и ресурсами РВС.
В последнее время для решения ресурсоемких задач создаются различные распределенные и параллельные вычислительные среды (см., например, работы В.В. Абасова, В.С. Бурцева, В.А. Ва-сенина, В.В. Воеводина, А.Б. Жижченко, В.Н. Коваленко, В.В. Корнеева, Д.А. Корягина, А.О. Лациса, А.П. Новопашина, В.В. Топоркова и др.). Однако массовое использование таких сред сдерживается рядом нерешенных до конца проблем взаимодействия конечного пользователя (специалиста-предметника) с высокопроизводительными вычислительными установками. В их числе сложность задания параллелизма алгоритма решаемой задачи, анализа результатов счета, управления распределенным процессом решения задачи и др.
:Работа выполнена при поддержке РФФИ (проект № 08-07-00163) и при частичной поддержке гранта Президента РФ НШ 1676.2008.1.
Можно выделить два основных подхода к организации функционального наполнения пакета и решению прикладных задач в РВС.
1) Все вычислительные модули (прикладные программы пакета) находятся в одном узле РВС. По схеме решения задачи производится синтез целевой параллельной программы с последующей ее компиляцией и запуском на распределенной вычислительной установке.
2) Вычислительные модули размещаются в разных узлах РВС. Исполнение схемы решения задачи выполняется в режиме интерпретации.
В данной работе рассматриваются средства инструментального комплекса DISCOMP (Distributed COmputing system of Modular Programming) для описания предметной области пакета прикладных программ и постановок исследовательских задач, а также способ выполнения схем решения задач в режиме интерпретации. Основные методологические принципы описания предметной области для распределенного пакета прикладных программ приведены в работе [1].
Инструментальный комплекс DISCOMP Данный программный комплекс предназначен для инструментальной поддержки основных этапов разработки и применения пакетов прикладных программ, ориентированных на работу в гетерогенной (многоплатформенной) РВС, которая может включать вычислительные кластеры различных видов. РВС характеризуется следующими особенностями: в одном узле РВС может быть установлено несколько вычислительных модулей; допустимо включение в состав функционального наполнения пакета нетиражируемых вычислительных модулей, жестко привязанных к узлам РВС; построение схемы решения задачи осуществляется по процедурной постановке задачи [2]; в качестве входного языка для описания модели предметной области пакета и формирования постановок исследовательских задач используется
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
метаязык XML; процессы решения задач в пакетах прикладных программ требуют проведения многовариантных параллельных расчетов; повышение степени отказоустойчивости пакета при выполнении схемы решения задачи может быть достигнуто путем введения вычислительной избыточности (установкой всех вычислительных модулей в каждом узле РВС).
Перечисленные выше характеристики РВС требуют включения в инструментальный комплекс гибких средств управления вычислительными процессами и формирования набора ограничений для управляющих конструкций схемы решения задачи.
Способы формирования схемы решения задачи. В рамках нашего подхода функциональное наполнение пакета состоит из множества вычислительных модулей, размещенных в узлах РВС. Модуль реализуется в виде программы, исполняемой в пакетном режиме и снабженной спецификацией по ее назначению, применению, времени выполнения, формату входных и выходных данных (параметров). Спецификации модулей определяют зависимости по входным и выходным параметрам (формируют описание исследуемой предметной области).
Задание пользователя пакету представляется в виде схемы решения задачи, определяющей множества входных и выходных параметров задачи и порядок применения модулей, требуемых для нахождения искомых значений параметров по исходным данным. Вычислительный процесс (процесс интерпретации схемы решения задачи) предполагает выполнение ряда зависимых между собой подзадач (модулей). В этом случае сложность управления таким процессом в РВС значительно возрастает [3].
В пакетах, как правило, реализуются два основных вида постановки задачи: процедурная и непроцедурная. Планирование по непроцедурной постановке задачи вида «по заданным значениям параметров x1t x2, ..., xk вычислить значения параметров yh y2, ..., yr» позволяет автоматически получать схему решения задачи, не вдаваясь в понимание зависимостей между входящими в нее модулями. Такой способ построения схемы решения задачи подходит для пакетов с большим количеством параметров и модулей. Зачастую, пакеты включают, незначительное число модулей и предполагают строгую последовательность их выполнения. В этом случае постановка задачи в процедурном виде является более предпочтительной и обеспечивает пользователю возможность само-
стоятельно определять порядок вычислений в процессе решения задачи и использовать дополнительные конструкции языка управления заданием, которые сложно применять при планировании вычислений по непроцедурной постановке задачи.
Входной язык. В качестве входного языка для описания предметной области пакета используется метаязык XML [4], обеспечивающий представление структурированных данных в виде записей, списков и деревьев. Важной чертой XML является его расширяемость, позволяющая совершенствовать и дополнять входной язык новыми средствами и возможностями без потери совместимости с предыдущими версиями этого языка. Входной язык, разработанный на основе XML, позволяет различным распределенным системам обмениваться данными посредством общих структур и спецификаций. В силу ограниченности объема работы полное формальное описание входного языка не приводится, а его основные особенности иллюстрируются примерами спецификаций различных объектов предметной области.
Описание предметной области включает следующие основные секции: спецификации параметров, модулей и постановок задач. На рис. 1. приведен фрагмент описания предметной области, включающий спецификации трех параметров, двух модулей и одной постановки задачи.
В первой секции описываются все параметры, которые могут быть задействованы в процессе решения задачи. Каждый параметр снабжен набором атрибутов: уникальным идентификатором, концептуальным именем, типом и соответствующими типу атрибутами. К допустимым типам параметров относятся файл и список файлов. Дополнительным атрибутом параметра типа файл является имя файла на диске для этого параметра. Дополнительными атрибутами параметра типа список файлов являются число элементов списка и шаблон имен файлов на диске для этих элементов.
Секция <modules> содержит спецификации, определяющие назначение модуля, атрибуты (идентификатор, имя модуля), команды запуска, а также множество входных и выходных параметров.
В секции <processes> описываются различные схемы решения задач для заданной предметной области. Каждая схема задается в ярусной форме, определяющей последовательность выполнения модулей для вычисления требуемых параметров.
<!-- секция спецификаций параметров --> <parameters>
<param id-Г паше='model' type-file1
fi I ena me-mo de 1. Ы*> <param id='2' name='model_list' type- file list'
pat t с rn-mode l_c lc mcnt _% 1. t\t11 si /с=' 10 '/> <param id-31 nmnc='rcsult_list' typc='filelist' pattern-result_clement_%] ,i\t' size=' 10'/> </parameiers>
<!— секция спецификаций модулей —> <modules>
<module id=' 1' name='decompose^ < commands os-Window s*>
<start>decompose.exe</start> </commatids> <parameters>
<input><paratn id-lV></input> <ouipul><paratn id-2'/></output> </parametcrs> </tnodule>
< mod ule id='2' name='solve'> <conunands os='Linu\'>
<start>./solver (param_id:2)</siart> </commands> <parameters>
<inpiU><param id='27></input> <output><param id='3'/></outpiit> </parameters> </module> </modules>
<1—секция спецификаций постановок задач —> <proccsses> <proccss> <siage>
<module id='l'/> </stage> <slage>
<module id='2' 11stParamctcrld='2'/> </stagc> </process>
•-/processes-_
Рис. 1. Фрагмент описания предметной области на языке XML
Управление вычислительным процессом
Подход к управлению вычислительным процессом в инструментальном комплексе DISCOMP базируется на механизмах обработки событий, возникающих при выполнении схемы решения задачи. Он включает две фазы: 1) применение операций, созданных пользователем пакета и предназначенных для обработки события и выбора нужного управления; 2) проверку корректности выбранного управления (контроль выполнения системы ограничений для интерпретатора схемы решения задачи в РВС) системными функциями пакета. Вызовы пользовательских операций реализуются в виде функций на языке JacaScript [5] и включаются в процедурную постановку задачи.
Спецификация каждого из ограничений интерпретатора схемы решения задачи включает: вид ограничения; способ его задания; уровни модели РВС, на которых осуществляется задание и
контроль ограничения; наименование компонента РВС, контролирующего выполнение ограничения; формализованное представление ограничения; результат нарушения ограничения. Эти ограничения могут быть явными и неявными. Явные ограничения специфицируются пользователем при формировании постановки задачи или реализуются в рамках пользовательских операций. Неявные ограничения задаются при описании предметной области пакета или определяются программно-аппаратной средой, в которой функционирует пакет.
Множество неявных ограничений интерпретатора схемы решения задачи включает:
• ограничения на диапазоны значений параметров предметной области, определяемые типами этих параметров;
• условия допустимости выполнения схемы решения задачи;
• ограничения, определяемые системными характеристиками РВС: параметрами файловой системы, производительностью коммуникационной среды, количеством узлов и процессоров, тактовой частотой процессоров, объемами оперативной памяти и винчестеров и др.
Множество явных ограничений интерпретатора схемы решения задачи включает:
• размерность счетчиков циклических конструкций схемы решения задачи, время выполнения вычислительных модулей, время общего решения задачи;
• условия удовлетворения вычисляемых значений параметров качественным требованиям алгоритма решения задачи.
Спецификация схемы решения задачи включает управляющие конструкции для анализа текущего состояния и принятия решений о дальнейшем ходе вычислений. Применение таких конструкций основывается на системе событий, происходящих при обработке схемы решения задачи. К ним относятся:
• beforeStart - готовность модуля к запуску;
• onFinish - завершение работы модуля;
• onFail - некорректное завершение работы модуля;
• onStop - вынужденная остановка модуля;
• onTimer - мониторинг результатов вычислений, выполняемый с определенным интервалом времени.
Разработчик пакета может самостоятельно определять функциональное наполнение для обработки происходящих в процессе вычислений событий. Такой обработчик реализуется в виде набора операторов на языке JavaScript. Язык
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
JavaScript расширен программным интерфейсом DiscompAPI, позволяющий пользователю взаимодействовать с исполнительной подсистемой инструментального комплекса. Интерфейс DiscompAPI предоставляет следующие функциональные возможности: получение/изменение значений параметров, остановку/запуск процесса выполнения модуля (всех модулей на ярусе), передачу управления на нужный ярус. Корректность обработки событий средствами DiscompAPI обеспечивается ограничениями целостности, накладываемыми в процессе вычислений на отношения между объектами предметной области (параметрами, модулями, значениями параметров и др.).
На рис. 2 приведен пример описания условия остановки вычислений при обработке параметра типа список файлов._
<process> <slage>
<module id=T/> </stage> <st;ige>
<module id-2' listParameter='2'
onFi ni sh='checkListResult()'£>
</slago> </proccss> <actions> function oheckListResultf)
í
var res = DiscompAPI, getModuleOuputParam(); if (res !=0) {
DiscompAPI.stopCurrentStageModulesO;
};
>;
<yaclionsí>
Рис. 2. Включение управляющих конструкций в схему решения задачи
После завершения каждого экземпляра модуля module 2, запускается обработчик checkListResult(), который анализирует выходной элемент списка param 3. Если значение выходного элемента отлично от нуля, то производится остановка всех модулей на текущем ярусе и вычислительный процесс завершается. Применение данной конструкции позволяет избегать избыточных вычислений при решении комбинаторных задач большой размерности, основным назначением которых является поиск результата удовлетворяющего определенным условиям.
Следующий пример (рис. 3) иллюстрирует задание способа обработки события onFinish при параллельном запуске модулей, реализующих различные алгоритмы решения одной и той же задачи и идентичных по формату входных и выходных параметров. Применение подобной конструкции целесообразно в случае, если заведомо неизвестно
какой из алгоритмов будет наиболее эффективным для вычисления значений выходных параметров.
<stage>
<module id—Г
onFinish=TJisconipAPLstopModi[les([2,3]);'> <module id-2'
onFmish-'DiscompAPI.stopModules([ ^З]);^ <module id—3'
onFinish-Di scomp API. stopModules( [ 1,2J),^> </stage>_
Рис. 3. Пример задания способа обработки события onFi-nish
После завершения выполнения одного из модулей, происходит событие onFinish, обработчик которого производит остановку остальных модулей. При таком подходе выполнение избыточных вычислений, во-первых, обеспечивает решение задачи за минимальное время, во-вторых, увеличивает степень отказоустойчивости вычислительного процесса. Данная постановка задачи эффективна только в том случае, если число доступных вычислительных узлов больше или равно количеству модулей.
Внутреннее представление описания предметной области. Транслятор инструментального комплекса DISCOMP переводит описание предметной области пакета во внутреннюю объектно-ориентированную структуру (рис. 4) и осуществляет проверку целостности модели данной предметной области.
Процесс трансляции во внутреннюю структуру включает в себя следующие этапы. Описание предметной области передается в качестве параметра методу Init объекта Process, который выполняет анализ всех структур, входящих в это описание, и производит разбор схемы решения задачи. Для каждого яруса схемы создается новый объект Stage, инициализируемый фрагментом спецификации. После инициализации каждый объект Stage добавляется в массив stages_arr объекта Process. Модули, которые должны быть выполнены на каждом ярусе, инициализируются по спецификациям входящим в предметную область и добавляются в массив modules_arr объекта Stage. Подобным образом инициализируются параметры для каждого из модулей.
Вычислительный процесс предполагает обработку всех ярусов (элементов массива stages_arr объекта Process) для данной схемы решения задачи. При обработке каждого яруса производится инициализация и запуск модулей на доступных узлах распределенной среды. После завершения
СИСТЕМНЫМ АНАЛИЗ И МЕЖДИСЦИПЛИНАРНЫМ ПОДХОД В ИССЛЕДОВАНИЯХ
выполнения всех модулей яруса (элементов массива modules_arr объекта Stages), производится переход к следующему ярусу и обработка схемы решения задачи продолжается.
формируются с использованием описанных в статье языковых средств, с применением различных конструкций управления вычислительным процессом.
Parameter
+id : int +name . siring ■Hype : int +cümniem : string -filename suing fiie [jatJtjern : string
+ie_deflned() +ge-jf) : string +setiin v : string) dearO
Module
-id : int
name : string -comment : string -in_par_arr : Parameter -out_par_arr: Parameter -siart_cmd : string -stöp_crnd ■ string -exec_tirne_llmlt : int -events : EventHandler
lnit(in spec-string) : bool +Start() : bool ♦StopQ : bool_
Process
+id : int : int -»-name : string -status ■ int -stagesarr : Stage -current_stage : int -params_arr : Parameter
+• lnît(l n xml : string) : bool +lasksQueueO : bool
-proo&ss_ptr : Process
Stage
♦status : int + modijles_anr : Module -events : EventHandler
InitHn xmhstrinq) : bool
_I2
EvontHandler
-typâ int -function : string
■»Calif )
Dis Dorm p API
+ge1Par£uri&ten(in id im) +setParannetjer(in id : int. in udue : strirgi getParameterValue{in id ; int) gelMLO*JlJPararn(i n rT*d:int, in pidJnt) ■iCopStaifeMüduletr ) +stopModul&(in ïïi_id : int) +stopMcdules(in modules_arr : Int; -t-st&rtModLileiin rn_id " in1) golnSlagei in 5tage_nurn ; int) rastartMûdijl&(in iri_ld : int)
Рис. 4. UML-диаграмма классов объектов для внутреннего представления описания предметной области
Заключение. Характерными особенностями подхода к разработке пакетов прикладных программ, представленного в данной работе, являются: представление пакетных знаний на метаязыке XML; построение схемы решения задачи на основе процедурной постановки задачи; выполнение вычислительного процесса в режиме интерпретации; предоставление конечному пользователю программных средств управления процессом вычислений.
Инструментальный комплекс DISCOMP использован для создания ряда пакетов прикладных программ в гетерогенной многоплатформенной РВС [6, 7, 8]. Схемы решения задач в этих пакетах
БИБЛИОГРАФИЯ
1. Опарин Г. А., Феоктистов А. Г. Инструментальная распределенная вычислительная САТУРН-среда // Программные продукты и системы. 2002. № 2. С. 27-30.
2. Опарин Г. А., Феоктистов Д. Г. САТУРН - метасистема для автоматизации конструирования и поддержки функционирования пакетов прикладных программ с автоматическим планированием вычислительного процесса // Пакеты прикладных программ. Итоги и применения. Новосибирск: Наука, 1986. С.12-21.
3. Гершуни Д. С. Планирование вычислений в системах жесткого реального времени (обзор и перспективы) // Вычислительная техника. Системы управления. 1991. Вып. 6. С. 4-51.
4. Спенеср П. XML проектирование и реализация. [Б. м.] : Лори, 2001. 510 c.
5. Пауэлл Т., Шнайдер Ф. Полный справочник по JavaScript. М.: Вильямс, 2007. 960 c.
6. Сидоров И. А., Феоктистов А. Г., Тятюшкин А. И. Распределенная информационно-вычислительная среда модульного программирования // Параллельные вычисления и задачи управления : тр. III междунар. конф. PAC0'2006. М., 2006. C. 505-521.
7. Параллельная технология решения SAT-задач с применением пакета прикладных программ D-SAT / Заикин О. С., Семенов А. А., Феоктистов А. Г., Сидоров И. А. // Вестн. ТГУ. При-лож. Томск, 2007. № 23. С. 83-95.
8. Опарин Г. А., Богданова В. Г., Сидоров И. А. Интеллектуальный решатель задач в булевых ограничениях в распределенной вычислительной среде // Информационные и математические технологии в науке и управлении : тр. XII Байкал. Всерос. конф. - Иркутск, 2007. Ч. II. С.12-19.