УДК 681.3.06
А. г. феоктистов 1, с. А. горский
Институт динамики систем и теории управления СО РАН ул. Лермонтова, 134, Иркутск, 664033, Россия
E-mail: 1 [email protected]
реализация метода мультистарта в пакете градиент
введение
Одной из сложных оптимизационных задач является поиск глобального минимума многоэкстремальных функций. Сложность решения подобных задач связана с проведением большого объема вычислений.
В качестве средства для поиска глобального минимума многоэкстремальной функции зачастую применяется метод мультистарта [Жиглявский, Жилинская, 1991]. Сутью метода мультистарта является сведение поиска глобального минимума функции к поиску локальных минимумов. При этом для поиска локальных минимумов используется тот или ином алгоритм локального спуска, производимого из некоторого множества N начальных точек. Из полученных точек локальных минимумов выбирается точка с наименьшим значением, которая принимается за точку глобального минимума.
Эффективная реализация метода мультистарта предполагает использование средств и методов параллельного программирования. На сегодняшний день, с одной стороны, для решения ресурсоемких вычислительных задач есть и высокопроизводительная вычислительная техника и программные средства для решения этих задач на параллельных компьютерах.
Однако, с другой стороны, массовое использование такого рода вычислений сдерживается рядом нерешенных на сегодняшний день проблем параллельного программирования. К таким проблемам, возникающим перед рядовым пользователем высокопроизводительной вычислительной установки, можно отнести решение следующих вопросов (см., например: [Воеводин В., Воеводин Вл., 2002; Эндрюс, 2003]):
1) сложности при написании программы:
- выявление внутреннего параллелизма алгоритма решения задачи;
- сложность выбора нужного языка (или системы) параллельного программирования и дальнейшего написания параллельной программы;
- необходимость учета при написании параллельной программы всех специфических особенностей аппаратного обеспечения и коммуникационной среды;
2) сложности при выполнении программы:
- не всегда удобный, часто непривычный интерфейс для доступа к вычислительной установке;
- эффективное использование параллельной программы;
- эффективное использование вычислительной техники;
- переносимость параллельной программы и др.
Статья посвящена рассмотрению архитектуры и принципов реализации инструментального комплекса, обеспечивающего удобную среду для разработчика параллельных программ, снижение требований к уровню его подготовки и ускорение процесса разработки программного обеспечения. Применение представленного инструментального комплекса рассматривается на примере реализации метода мультистарта в пакете прикладных программ Градиент.
1818-7900. Вестник НГУ. Серия: Информационные технологии. 2007. Том 5, выпуск 2 © А. Г. Феоктистов, С. А. Горский, 2007
Инструментальный комплекс
Архитектура инструментального комплекса для создания пакетов параллельных прикладных программ (рис. 1) включает многооконный текстовый редактор, претранслятор, подсистему компиляции и подсистему запуска.
Рис. 1. Архитектура инструментального комплекса
Многооконный текстовый редактор предназначен для ввода описания вычислительной модели предметной области на специализированном входном языке ORLANDO (Objects Relations in Language of Descriptions). Данный язык относится к классу декларативных языков. ORLANDO включает набор языковых конструкций для описания объектов вычислительной модели предметной области (параметров, операций, модулей и постановок задач) и инструкций по вводу/выводу данных, инициализации значений входных параметров задачи и запуску вычислительного процесса. Вычислительная модель предметной области детально представлена в работе [Опарин, Феоктистов, 2002]. Текстовый редактор обеспечивает набор функций, необходимых для быстрого и удобного формирования языковых конструкций ORLANDO, а также средства для выполнения динамической проверки синтаксиса вводимых конструкций и их семантики с точки зрения корректности и целостности вычислительной модели предметной области.
Претранслятор производит разбор описания предметной области на языке ORLANDO и его перевод на язык C++. При обработке конструкции постановки задачи выполняется запуск планировщика, построение параллельного плана решения задачи и включение в текст программы вызовов вычислительных модулей, реализующих план вычислений.
Подсистема компиляции параллельных программ осуществляет подключение к вычислительному кластеру, копирует исходные файлы программы на кластер, производит компиляцию основной программы и прикладных модулей с использованием штатного компилятора языка C++. При компиляции используются: библиотека классов, предназначенных для реализации объектов вычислительной модели предметной области; системные библиотеки для работы с внутренними структурами данных, управления запуском вычислительных модулей и ввода/вывода данных; библиотеки вычислительных модулей, реализующих операции предметной области; коммуникационная библиотека PVM, обеспечивающая поддержку параллельного программирования.
Подсистема запуска параллельных программ копирует из базы расчетных данных на вычислительный кластер файлы, содержащие значения входных параметров, выполняет запуск программы, осуществляет мониторинг работы этой программы и по завершении вычислений копирует в базу расчетных данных файл, содержащий значения целевых параметров.
Метод мультистарт
Мультистарт представляет собой семейство методов, и в зависимости от способа выбора начальных точек (случайный или детерминированный), а также алгоритма поиска локального
минимума выделяют ту или иную его разновидность. Главным недостатком метода мультистарта считается то, что один и тот же локальный минимум находится несколько раз.
Для устранения данной проблемы применяется кластеризация начальных точек. Для этого процесс поиска локальных минимумов на определенном этапе прерывается, к полученным промежуточным точкам применяется алгоритм кластеризации, результатом работы которого является несколько групп точек. В дальнейшем, считая, что точки, принадлежащие к одной группе, притягиваются к одному локальному минимуму, из каждой группы выбирается по одной точке и снова запускается алгоритм поиска локальных минимумов, используя эти точки в качестве начальных. Таким образом, происходит сокращение вычислительных затрат необходимых для нахождения глобального минимума функции.
Но применение метода кластеризации имеет ряд недостатков [Жиглявский, Жилинская, 1991], влияющих на вероятность нахождение глобального минимума:
- большинство методов кластеризации требует подбора параметров их работы под конкретную ситуацию, что, как правило, требует дополнительного исследования минимизируемой функции;
- некоторые локальные минимумы могут быть не найдены в случае их расположения в окрестности других локальных минимумов;
- при использовании некоторых алгоритмов локального спуска, из начальных точек, лежащих как угодно близко друг к другу, в процессе спуска могут быть найдены локальные минимумы, лежащие на значительном удалении друг от друга, т. е. нарушается основной постулат - что точки, принадлежащие к одной группе, притягиваются к одному локальному минимуму.
Пакет прикладных программ Градиент
Исходя из анализа применения методов кластеризации в рамках мультистарта, приведенного в предыдущем разделе, было решено реализовывать алгоритм классического мультистарта.
Рассмотрим пакет программ Градиент, предназначенный для поиска глобального минимума некоторой функции f x) методом мультистарта. Описание предметной области пакета Градиент включает следующие параметры:
- PointCount - количество начальных точек для метода мультистарта;
- SPxy - количество координат начальной точки;
- StartPoint [SPxy] - вектор, содержащий координаты начальной точки;
- EPxyv - число элементов вектора EndPoint;
- EndPoint [EPxyv] - вектор, содержащий координаты точки и значение локального минимума;
- Flen - длина текстовой строки, которая задает функцию;
- Function [Flen] - минимизируемая функция в текстовом виде;
- BoundsNum - количество границ на координату (минимальное и максимальное значение координат);
- Bounds [SPxy, BoundsNum] - матрица, задающая границы изменения координат;
- Val - значение глобального минимума;
- MPoint - координаты точки глобального минимума;
- GrInc - приращение, с помощью которого вычисляется значение градиента в точке;
- Initial Shift - начальное значение шага смещения;
- MaxCall - максимальное число вызовов функции;
- Accuracy - точность вычисления локального минимума.
Схемы операций предметной области определенны следующим образом:
- Gen(PointCount, SPxy, Bounds -> StartPoint) - осуществляет генерацию начальных точек для запуска метода градиента;
- Grad (SPxy, StartPoint, EPxyv, GrInc, InitialShift, MaxCall, Accuracy, Flen, Function ^ EndPoint) - осуществляет спуск методом градиента;
- Res (PointCount, EndPoint, EPxyv, EPxy ^ Point, Val) - находит минимальное значение функции.
После имени операции слева и справа от стрелки располагаются соответственно списки входных и выходных параметров операций. Для операции Grad выполняется параллельный запуск множества ее экземпляров. Элементы параллельных списков StartPoint и EndPoint, являющихся соответственно входным и выходным параметрами операции Grad, обрабатываются независимо друг от друга в отдельных процессах - экземплярах этой опера-ции.
Информационный двудольный ориентированный граф, представляющий схему решения задачи, представлен на рис. 2.
В качестве примера использования пакета ГРАДИЕНТ рассмотрим минимизацию функции В. Я. Катковника [1976]:
f( x, x2) = 0,5 (xj2 + xf)'l + 0,5 cos (l, 5x1) cos (rx2) + 0,5 cos (/5 x1) cos (3,5x2)j с ограничением
(x - 2)2 + x22 - 4 < 0.
Данное ограничение определяет область внутри круга радиуса 2 с центром в точке с координатами (2; 0) и с глобальным минимумом, расположенным на ее границе.
Данная функция является сильно многоэкстремальной и относится к классу сложных задач оптимизации [Жиглявский, Жилинская, 1991; Катковник, 1976]. Трехмерное изображение этой функции представлено на рис. 3. Она имеет глобальный экстремум в начале координат. В окрестности глобального минимума оптимизируемая функция имеет локальные минимумы, мало отличающиеся от глобального и друг от друга.
Рис. 3. Функция в области [-5; 5] х [-5; 5]
При проведении расчетов на вычислительном кластере создавались виртуальные машины, включающие от 1 до 8 двухпроцессорных узлов кластера. Расчеты проводились при значении параметра РотЮоиП; равном 1000. В таблице приведены время счета с использованием различного числа узлов кластера и соответствующий коэффициент ускорения счета.
расчетное время на различном числе процессоров
Число процессоров 1 2 3 4 8
Время счета (с) 245 123 85 64 31
Коэффициент ускорения 1 1,992 2,882 3,828 7,903
Эффективность (%) 100 99,6 96,1 95,7 98,8
заключение
Суть и новизна результатов, представленных в данной работе, заключаются в разработке инструментальных и языковых средств представления пакетных знаний о предметной области, средств формирования постановок исследовательских задач и исполнения параллельных программ решения задач на многопроцессорных вычислительных комплексах. Представленный подход характеризуется применением методов крупноблочного распараллеливания в рамках общей схемы решения задачи, программированием в терминах объектов предметной области, обеспечением простоты и гибкости модификации описаний предметной области и постановок задач, автоматизацией конструирования параллельной. Разработанные инструментальные средства ориентированы на кластерные вычислительные системы, работающие под управлением ОС Linux. Их отладка и тестирование осуществляется на вычислительном кластере МВС-1000 / 16 ИДСТУ СО РАН (http://mvs.icc.ru).
список литературы
Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002. 608 с.
Жиглявский А. А., Жилинская А. Г Методы поиска глобального экстремума. М.: Наука, 1991. 248 с.
Катковник В. Я. Линейные оценки и стохастические задачи оптимизации (метод параметрических операторов усреднения). М.: Наука, 1976.
Опарин Г. А., Феоктистов А. Г. Инструментальная распределенная вычислительная САТУРН-среда // Программные продукты и системы. 2002. № 2. С. 27-30.
Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования. М.: Изд. дом «Вильямс», 2003. 512 с.
Материал поступил в редколлегию 29.09.2007