velikol.ru
1

ОРГАНИЗАЦИЯ распределенныХ вычислениЙ в инструментальном комплексе DISCOMP


Опарин Г.А., Сидоров И. А., Феоктистов А.Г.

(г. Иркутск, Институт динамики систем и теории управления СО РАН)


В работе рассматриваются вопросы, связанные с организацией распределенных вычислений в инструментальном комплексе DISCOMP (DIStributed COmputing system of Modular Programming). Описываются языковые средства для описания предметной области пакета прикладных программ и постановок исследовательских задач, а также способ выполнения схем решения задач в распределенной вычислительной среде.


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

Можно выделить два основных подхода к организации функционального наполнения пакета и решению прикладных задач в РВС.

1) Все вычислительные модули (прикладные программы пакета) находятся в одном узле РВС. По схеме решения задачи производится синтез целевой параллельной программы с последующей ее компиляцией и запуском на распределенной вычислительной установке.

2) Вычислительные модули размещаются в разных узлах РВС. Исполнение схемы решения задачи выполняется в режиме интерпретации.

В данной работе рассматриваются средства инструментального комплекса DISCOMP (DIStributed COmputing system of Modular Programming) для описания предметной области пакета прикладных программ и постановок исследовательских задач, а также способ выполнения схем решения задач в режиме интерпретации. Основные методологические принципы описания предметной области для распределенного пакета прикладных программ приведены в работе [1].

^ Инструментальный комплекс DISCOMP. Данный программный комплекс предназначен для инструментальной поддержки основных этапов разработки и применения пакетов прикладных программ, ориентированных на работу в гетерогенной (многоплатформенной) РВС, которая может включать вычислительные кластеры различных видов. РВС характеризуется следующими особенностями:

  • в одном узле РВС может быть установлено несколько вычислительных модулей;

  • допустимо включение в состав функционального наполнения пакета нетиражируемых вычислительных модулей, жестко привязанных к узлам РВС;

  • построение схемы решения задачи осуществляется по процедурной постановке задачи [2];

  • в качестве входного языка для описания модели предметной области пакета и формирования постановок исследовательских задач используется метаязык XML;

  • процессы решения задач в пакетах прикладных программ требуют проведения многовариантных параллельных расчетов;

  • повышение степени отказоустойчивости пакета при выполнении схемы решения задачи может быть достигнуто путем введения вычислительной избыточности (установкой всех вычислительных модулей в каждом узле РВС).

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

^ Способы формирования схемы решения задачи. В рамках нашего подхода функциональное наполнение пакета состоит из множества вычислительных модулей, размещенных в узлах РВС. Модуль реализуется в виде программы, исполняемой в пакетном режиме и снабженной спецификацией по ее назначению, применению, времени выполнения, формату входных и выходных данных (параметров). Спецификации модулей определяют зависимости по входным и выходным параметрам (формируют описание исследуемой предметной области).

Задание пользователя пакету представляется в виде схемы решения задачи, определяющей множества входных и выходных параметров задачи и порядок применения модулей, требуемых для нахождения искомых значений параметров по исходным данным. Вычислительный процесс (процесс интерпретации схемы решения задачи) предполагает выполнение ряда зависимых между собой подзадач (модулей). В этом случае сложность управления таким процессом в РВС значительно возрастает [3].

В пакетах, как правило, реализуются два основных вида постановки задачи: процедурная и непроцедурная. Планирование по непроцедурной постановке задачи вида «по заданным значениям параметров x1, x2, …, xk вычислить значения параметров y1, y2, …, yr» позволяет автоматически получать схему решения задачи, не вдаваясь в понимание зависимостей между входящими в нее модулями. Такой способ построения схемы решения задачи подходит для пакетов с большим количеством параметров и модулей. Зачастую, пакеты включают, незначительное число модулей и предполагают строгую последовательность их выполнения. В этом случае постановка задачи в процедурном виде является более предпочтительной и обеспечивает пользователю возможность самостоятельно определять порядок вычислений в процессе решения задачи и использовать дополнительные конструкции языка управления заданием, которые сложно применять при планировании вычислений по непроцедурной постановке задачи.

^ Входной язык. В качестве входного языка для описания предметной области пакета используется метаязык XML [4], обеспечивающий представление структурированных данных в виде записей, списков и деревьев. Важной чертой XML является его расширяемость, позволяющая совершенствовать и дополнять входной язык новыми средствами и возможностями без потери совместимости с предыдущими версиями этого языка. Входной язык, разработанный на основе XML, позволяет различным распределенным системам обмениваться данными посредством общих структур и спецификаций. В силу ограниченности объема работы полное формальное описание входного языка не приводится, а его основные особенности иллюстрируются примерами спецификаций различных объектов предметной области.

Описание предметной области включает следующие основные секции: спецификации параметров, модулей и постановок задач. На рис. 1. приведен фрагмент описания предметной области, включающий спецификации трех параметров, двух модулей и одной постановки задачи.





pattern='model_element_%1.txt' size=’10’/>

pattern='result_element_%1.txt' size=’10’/>


секция спецификаций модулей -->







decompose.exe (param_id:1)

















./solver (param_id:2)
































Рис. 1. Фрагмент описания предметной области на языке XML


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

Секция содержит спецификации, определяющие назначение модуля, атрибуты (идентификатор, имя модуля), команды запуска, а также множество входных и выходных параметров.

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

^ Управление вычислительным процессом. Подход к управлению вычислительным процессом в инструментальном комплексе DISCOMP базируется на механизмах обработки событий, возникающих при выполнении схемы решения задачи. Он включает две фазы: 1) применение операций, созданных пользователем пакета и предназначенных для обработки события и выбора нужного управления; 2) проверку корректности выбранного управления (контроль выполнения системы ограничений для интерпретатора схемы решения задачи в РВС) системными функциями пакета. Вызовы пользовательских операций реализуются в виде функций на языке QSA [5] и включаются в процедурную постановку задачи.

Спецификация каждого из ограничений интерпретатора схемы решения задачи включает: вид ограничения; способ его задания; уровни модели РВС, на которых осуществляется задание и контроль ограничения; наименование компонента РВС, контролирующего выполнение ограничения; формализованное представление ограничения; результат нарушения ограничения. Эти ограничения могут быть явными и неявными. Явные ограничения специфицируются пользователем при формировании постановки задачи или реализуются в рамках пользовательских операций. Неявные ограничения задаются при описании предметной области пакета или определяются программно-аппаратной средой, в которой функционирует пакет.

Множество неявных ограничений интерпретатора схемы решения задачи включает:

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

  • условия допустимости выполнения схемы решения задачи;

  • ограничения, определяемые системными характеристиками РВС: параметрами файловой системы, производительностью коммуникационной среды, количеством узлов и процессоров, тактовой частотой процессоров, объемами оперативной памяти и винчестеров и др.

Множество явных ограничений интерпретатора схемы решения задачи включает:

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

  • условия удовлетворения вычисляемых значений параметров качественным требованиям алгоритма решения задачи.

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

Разработчик пакета может самостоятельно определять функциональное наполнение для обработки происходящих в процессе вычислений событий. Такой обработчик реализуется в виде набора операторов на языке QSA. Язык QSA расширен программным интерфейсом DiscompAPI, позволяющий пользователю взаимодействовать с исполнительной подсистемой инструментального комплекса. Интерфейс DiscompAPI предоставляет следующие функциональные возможности: получение/изменение значений параметров, остановку/запуск процесса выполнения модуля (всех модулей на ярусе), передачу управления на нужный ярус. Корректность обработки событий средствами DiscompAPI обеспечивается ограничениями целостности, накладываемыми в процессе вычислений на отношения между объектами предметной области (параметрами, модулями, значениями параметров и др.).

На рис. 2 приведен пример описания условия остановки вычислений при обработке параметра типа список файлов. После завершения каждого экземпляра модуля module 2, запускается обработчик checkListResult(), который анализирует выходной элемент списка param 3. Если значение выходного элемента отлично от нуля, то производится остановка всех модулей на текущем ярусе и вычислительный процесс завершается. Применение данной конструкции позволяет избегать избыточных вычислений при решении комбинаторных задач большой размерности, основным назначением которых является поиск результата удовлетворяющего определенным условиям.












listParameter='2'

onFinish='checkListResult()'/>






function checkListResult() {

var res = DiscompAPI.getModuleListOuputParameter(2,3);

if ( res != 0 ) {

DiscompAPI.stopCurrentStageModules();

};

};

]]>



Рис. 2. Включение управляющих конструкций в схему решения задачи


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












Рис. 3. Пример задания способа обработки события onFinish


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

^ Внутреннее представление описания предметной области. Транслятор инструментального комплекса DISCOMP переводит описание предметной области пакета во внутреннюю объектно-ориентированную структуру (рис. 4) и осуществляет проверку целостности модели данной предметной области.





Рис. 4. UML-диаграмма классов объектов для внутреннего представления описания предметной области

Процесс трансляции во внутреннюю структуру включает в себя следующие этапы. Описание предметной области передается в качестве параметра методу Init объекта Process, который выполняет анализ всех структур, входящих в это описание, и производит разбор схемы решения задачи. Для каждого яруса схемы создается новый объект Stage, инициализируемый фрагментом спецификации. После инициализации каждый объект Stage добавляется в массив stages_arr объекта Process. Модули, которые должны быть выполнены на каждом ярусе, инициализируются по спецификациям входящим в предметную область и добавляются в массив modules_arr объекта Stage. Подобным образом инициализируются параметры для каждого из модулей.

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

Заключение. Характерными особенностями подхода к разработке пакетов прикладных программ, представленного в данной работе, являются: представление пакетных знаний на метаязыке 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. Qt Script for Applications [Электронный ресурс]. Электрон. дан. – Режим доступа: [http://doc.trolltech.com/qsa-1.2.2/index.html], свободный.

  6. Сидоров И.А., Феоктистов А.Г., Тятюшкин А.И. Распределенная информационно-вычислительная среда модульного программирования // Параллельные вычисления и задачи управления: Труды III Межд. конф. PACO’2006. – Москва: ИПУ РАН, 2006. – C. 505-521.

  7. Заикин О.С., Семенов А.А., Феоктистов А.Г., Сидоров И.А. Параллельная технология решения SAT-задач с применением пакета прикладных программ D-SAT // Вестник ТГУ. Приложение.– 2007. – № 23. – С. 83-95.

  8. Опарин Г.А., Богданова В.Г., Сидоров И.А. Интеллектуальный решатель задач в булевых ограничениях в распределенной вычислительной среде // Информационные и математические технологии в науке и управлении: Труды XII Байкальской Всероссийской конференции. Часть II. – Иркутск: ИСЭМ СО РАН, 2007. – С.12-19.