Пакеты прикладных программ, базирующиеся на методологиях концептуального и модульного программирования, долгое время являются гибким и эффективным инструментом проведения вычислительных экспериментов при решении сложных задач математического моделирования. Однако наблюдаемое сегодня бурное развитие высокопроизводительной вычислительной техники обусловливает возникновение новых требований к средствам и методам разработки и к применению таких программных комплексов.
В данной работе рассматривается инструментальный комплекс (ИК) DISCOMP, обеспечивающий автоматизацию разработки и применения распределенных пакетов прикладных программ (РППП) – специализированных систем параллельного модульного программирования. Пакеты данного вида представляют собой сложные программные комплексы, ориентированные на максимальное использование потенциала высокопроизводительных вычислительных систем при решении поставленных задач.
В качестве среды функционирования РППП может выступать как однородная вычислительная среда (ВС), так и среда с вычислительными узлами, организованными на базе различных программно-аппаратных платформ и управляемыми разными операционными системами. Крупноблочный распределенный алгоритм решения задачи в ВС строится на концептуальной модели предметной области, относящейся к классу вычислительных моделей [1]. Данная модель включает совокупность параметров исследуемой предметной области, модулей РППП, реализующих вычислительные операции с этими параметрами, и отношений между множествами параметров и модулей.
Модули составляют функциональное наполнение РППП и представляют собой исполняемые в пакетном режиме программы, которые могут быть написаны на различных языках программирования (C, Fortran, Pascal и др.) и являться платформо-зависимыми. Модули размещаются в разных узлах ВС, причем в одном узле ВС может быть установлено несколько модулей. Допустимо включение в состав функционального наполнения нетиражируемых программных комплексов, размещенных в строго определенных узлах ВС, а также унаследованного программного обеспечения, уже не соответствующего современным требованиям, но до сих пор эксплуатируемого из-за трудоемкости его замены.
Удаленный запуск модулей, распределенный обмен данными между модулями через файлы и мониторинг узлов ВС реализуются средствами системной части РППП.
При разработке РППП с помощью DISCOMP следует ориентироваться на класс задач, для которых характерны следующие свойства: решение задачи требует проведения расчетов на ЭВМ с использованием больших объемов вычислительных ресурсов (процессорного времени, оперативной памяти, дискового пространства и др.); возможна декомпозиция общей сложной задачи на более простые (с вычислительной точки зрения) подзадачи; процесс решения общей задачи подразумевает распределенное решение набора ее взаимосвязанных подзадач; не предполагается интенсивное взаимодействие между параллельными вычислительными процессами; задача допускает декомпозицию данных на блоки и независимую параллельную обработку этих блоков; задача выполняется, как правило, по одной слабо меняющейся схеме, требующей динамического управления процессом вычислений. К такому классу относятся, например, задачи c многовариантными расчетами, а также многие переборные задачи.
Известные системы организации распределенных вычислений (например, кластерная система Condor, программный комплекс BOINC, инструментарий X-COM, пакет Globus Toolkit и др.) позволяют, как правило, осуществить в распределенной ВС решение не связанных между собой задач, допускающих распараллеливание по данным, но не обладают в полной мере всеми необходимыми возможностями для разработки и реализации более сложных распределенных прикладных программных комплексов.
Описание предметной области РППП в ИК DISCOMP задается в виде структуры S=, где Z – множество параметров; T – множество допустимых типов параметров; M – множество модулей; Y – множество узлов ВС, в которых размещен тот или иной модуль из M. Множество T включает следующие типы параметров: тип file, используемый для описания параметров неопределенной структуры (блоков произвольного текста большого размера); тип filelist, предназначенный для поддержки распараллеливания по данным (параллельный список параметров типа file); тип fileconst, введенный с целью сокращения объемов передачи данных в ВС (значение параметра типа fileconst один раз передается узлу ВС и затем может неоднократно использоваться при запуске модулей, размещенных в данном узле).
Содержательно модуль miÎM реализует возможность вычисления множества искомых (выходных) параметров модуля по множеству заданных (входных) параметров модуля. Поэлементная обработка параметра zj типа filelist модулем mi выполняется следующим образом: k-й элемент параметра zjk обрабатывается k-м экземпляром модуля mik.
Постановка содержательной задачи для структуры S задается пользователем пакета в процедурном виде и в общем случае формулируется следующим образом: «зная S, выполнить Q», где QÌM представляет собой частично упорядоченную последовательность модулей из M. При установлении частичного порядка множество Q разбивается на n непустых подмножеств. Упорядочение подмножеств осуществляется в зависимости от того, модули какого подмножества должны быть запущены раньше. В рамках каждого n-го подмножества входящие в него модули могут выполняться независимо друг от друга в любой последовательности или параллельно.
Описания предметной области РППП и постановок задач в DISCOMP представляются в формате, разработанном на основе расширяемого метаязыка XML [2].
Схемой решения задачи (СРЗ) в ИК DISCOMP является модель крупноблочной программы, отражающей информационно-логическую структуру вычислений в терминах предметной области. СРЗ автоматически строится в параллельно-ярусной форме на основе информационного планирования [3] по постановке задачи из элементов множеств параметров Z; модулей M; событий E, возникающих в процессе выполнения СРЗ; множества операций F, предназначенных для управления процессом выполнения СРЗ; множества специальных операторов O={START, STOP, READ <список параметров>, WRITE <список параметров>, CALL <имя модуля>, FORK, JOIN, TERMINATE <список модулей>}. Интерпретация СРЗ представляет собой последовательно-параллельный вычислительный процесс выполнения ее операторов.
ИК DISCOMP реализован на основе архитектуры «клиент–сервер» (см. рисунок). Система управления ВС (серверная часть ИК DISCOMP) поддерживает взаимодействие с подсистемами хранения данных и доступа пользователей к пакету, а также обеспечивает централизованное управление узлами ВС. Серверная часть ИК DISCOMP включает системное ядро, менеджеров вычислительных процессов и ресурсов, диспетчера очереди задач, подсистему журнализации и исполнительную подсистему. Вычислительный клиент реализует процесс выполнения модуля в узле ВС и осуществляет следующие функции: организация соответствующей среды для работы модуля (создание временных директорий, файлов входных и выходных параметров модулей, задание значений переменных окружения, перенаправление ввода/вывода и т.д.); получение значений входных параметров модуля из управляющего узла; запуск модуля; контроль процесса его выполнения; отсылка значений выходных параметров в управляющий узел после завершения работы модуля. Система хранения данных используется для структурированного размещения описаний предметной области, постановок задач в формате XML и расчетных данных в виде файлов, а также для предоставления доступа к ним из различных подсистем ИК DISCOMP. Синхронизация процессов чтения/записи данных осуществляется посредством файловых блокировок. Средства доступа пользователей к РППП обеспечивают взаимодействие пользователя с пакетом, управление вычислительными процессами, ввод данных, получение результатов вычислений и пр. ИК DISCOMP предоставляет два способа взаимодействия пользователя с РППП: с помощью набора утилит командной строки и посредством интерактивного пользовательского web-интерфейса.
Связь распределенных компонентов ИК DISCOMP между собой реализована на основе специально разработанного протокола сетевого взаимодействия, поддерживающего обмен сообщениями, удаленный вызов процедур и передачу больших объемов бинарных данных. Протокол обеспечивает высокопроизводительный обмен данными между компонентами ИК за счет установления между ними непрерывного соединения по TCP-каналу, использования многопоточного режима работы серверной части ИК DISCOMP и минимизации объемов управляющих данных в теле передаваемого сообщения.
Эффективность решения задач в РППП обеспечивается следующими особенностями работы ИК DISCOMP: возможностью максимального использования разнородных ресурсов ВС; поддержкой высокопроизводительного взаимодействия между распределенными компонентами DISCOMP; гибкой диспетчеризацией очередями задач; наличием средств оптимизации объемов данных, передаваемых между модулями в процессе решения задач в ВС; возможностью динамического управления процессами решения задач.
Динамическое управление вычислительным процессом в ИК DISCOMP базируется на механизмах обработки событий, возникающих при выполнении СРЗ. Алгоритм процесса управления включает две основные фазы: 1) применение операций, предназначенных для обработки события и выбора нужного воздействия на процесс вычислений; 2) проверка корректности выбранного воздействия системными функциями РППП (контроль выполнения множества ограничений для интерпретатора СРЗ). Управляющие операции задаются разработчиком РППП при описании предметной области, а их вызовы реализуются в виде функций на языке JavaScript и включаются в постановку задачи. Динамическое управление вычислительным процессом позволяет сократить общее время решения задачи за счет устранения вычислительной избыточности на основе анализа текущих результатов счета в узлах ВС.
Рассмотренные в данной работе инструментальные средства для разработки и применения РППП прошли успешную проверку при решении ряда прикладных задач из разных предметных областей: исследование биоресурсов озера Байкал; моделирование логистических складских систем; задачи оптимального управления летательным аппаратом; решение систем булевых уравнений. Так, использование ИК DISCOMP позволило реализовать технологию крупноблочного распараллеливания SAT-задач в виде пакета D-SAT [4]. С помощью данного пакета был успешно выполнен распределенный криптоанализ генераторов Гиффорда, суммирующего и порогового. Вычислительные эксперименты проводились в распределенной ВС, включающей 20 двухпроцессорных узлов (каждый процессор имеет по 4 ядра, всего 160 ядер).
В таблице приведены сравнительные результаты криптоанализа на одном ядре и в ВС с применением механизмов устранения вычислительной избыточности (реализованных в ИК DISCOMP) и без них.
SAT-задачи криптоанализа
|
Время решения SAT-задачи
|
на одном вычислительном ядре
|
в ВС (160 ядер)
|
в ВС (160 ядер) с устранением вычислительной избыточности
|
Генератор Гиффорда
|
14–30 ч.
|
1–2 ч.
|
30–60 мин.
|
Суммирующий генератор
|
20 мин.– 2 ч.
|
10–30 мин.
|
2–6 мин.
|
Пороговый генератор
|
3 суток
|
30–120 мин.
|
6–10 мин.
|
Архитектура и принципы работы ИК DISCOMP, а также способы и средства его реализации обеспечивают широкий спектр функциональных возможностей данного комплекса для организации распределенных вычислений. Компоненты ИК DISCOMP являются кросс-платформенными и позволяют использовать весь потенциал доступных разнородных узлов ВС.
Представленный в данной работе подход к организации РППП допускает естественное развитие и обобщение для базовых технологий параллельных и распределенных вычислений и новых классов фундаментальных и прикладных исследовательских задач.
Литература
1. Тыугу Э.Х. Концептуальное программирование. М.: Наука, 1984. 256 с.
2. Феоктистов А.Г., Сидоров И.А. Языковые средства описания распределенных вычислений в инструментальном комплексе DISCOMP // Параллельные вычислительные технологии: тр. Междунар. науч. конф. СПб: Изд-во СПГПУ, 2008. С. 488–493.
3. Технологические системы поддержки разработок искусственного интеллекта / Лавров С. [и др.] // Представление знаний в человеко-машинных и робототехнических системах: отчет Проблем. комис. многосторон. сотруднич. соцстран (Науч. вопр. вычислит. техн.). В 3-х т. М.: Изд-во ВЦ АН СССР, ВИНИТИ, 1984. С. 102–123.
4. Заикин О.С., Семенов А.А. Технология крупноблочного параллелизма в SAT-задачах // Проблемы управления. 2008. № 1. С. 43–50.