13. Han Y., Ma В., Zhang K.J. SPIDER: software for protein identification from sequence tags with de novo sequencing error // Bioinform. Comput. Biol. 2005. 3. P. 697-716.
14. Pearson W.R., Lipman D.J. Improved tools for biological sequence comparison // Proc. Natl. Acad. Sci. USA. 1988. 8. P. 2444-2448.
15. Levenshtein V. Binary codes capable of correcting deletions, insertions and reversals // Soviet Physics Doclady. 1966. 10. P. 707-710.
16. Damerau F. A technique for computer detection and correction of spelling errors // Comm. of the ACM. 1964. 7. P. 171-176.
17. Wagner R., Fisher M. The string-to-string correction problem // J. of the ACM. 1974. 21. P. 168178.
18. Ukkonen E. Finding approximate patterns in strings //J. Algor. 1985. 6. P. 132-137.
19. Myers G. A fast bit-vector algorithm for approximate string matching based on dynamic programming // J. ACM. 1999. 46. P. 395-415.
20. Hyyro H. A bit-vector algorithm for computing Levenshtein and Damerau edit distances // Proc. of the Prague Stringology Conf. Prague: Czech. Technical University, 2002. P. 44-54.
21. Navarro G. A guided tour to approximate string matching // ACM Computing Surveys. 2001. 33. P. 31-88.
22. Searle B.C., Dasari S., Wilmarth P.A., Turner M., Reddy A.P., David L.L., Nagal-la S. R. Identification of protein modifications using MS/MS de novo sequencing and the OpenSea alignment algorithm //J. Proteome Res. 2005. 4. P. 546-554.
23. G e n t z e 1 M., К ос h e г Т., Ponnusamy S.,Wilm M. Preprocessing of tandem mass spectrometric data to support automatic protein identification // Proteomics. 2003. 3. P. 1597-1610.
24. Wehofsky M., Hoffmann R. Automated deconvolution and deisotoping of electrospray mass spectra // Eur. J. Mass Spectrom. 2001. 7. P. 39-46.
Поступила в редакцию 01.11.06
УДК 004.272.43:519.872:004.032.26 В. Ю. Горицкая, Н. Н. Попова
ПРИМЕНЕНИЕ НЕЙРОСЕТЕВЫХ МЕТОДОВ ДЛЯ ПРОГНОЗИРОВАНИЯ ХАРАКТЕРИСТИК ПРОХОЖДЕНИЯ ЗАДАЧ В МНОГОПРОЦЕССОРНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМАХ1
(кафедра автоматизации систем вычислительных комплексов факультета ВМиК, e-mail: [email protected])
1. Введение. Современные тенденции обобществления вычислительных ресурсов, построения таких аппаратных платформ, как распределенные системы, элементами которых могут быть мультипроцессоры, кластеры и т.д., требуют разработки новых методов анализа и управления потоками задач для планирования вычислений в этих системах.
Из-за неоднородности и большого разнообразия современных многопроцессорных вычислительных систем, а также множества факторов, влияющих на ход выполнения задач в таких системах, представляет интерес исследование возможности применения нейросетевого подхода к организации планирования вычислений в многопроцессорных системах.
Как известно, задача построения расписания выполнения потока задач является NP-тpyднoй [1, 2]. Если вычислитель состоит из очень небольшого числа процессоров, то приемлемым и самым простым
1 Работа проводилась при поддержке гранта РФФИ № 05-07-90238.
решением является полный перебор всевозможных вариантов расписания и выбора среди них наилучшего. К сожалению, для большого количества процессоров такой метод неприменим. Существующие алгоритмы решения этой задачи предоставляют возможности уменьшения сложности перебора, но, как правило, эти алгоритмы имеют свои ограничения и требуют достаточно большого времени работы.
Системы управления заданиями, используемые на мощных вычислителях [3-6], обладают очень широкими возможностями для обеспечения эффективности функционирования многопроцессорной системы: можно применять различные настройки параметров алгоритмов планирования под реальный вычислитель и поток задач с определенными свойствами; алгоритм планирования может меняться в реальном времени в зависимости от изменений характеристик потока. Однако эти правила изменения алгоритма и различные настройки четко определены: они являются параметрами планировщика; нейросеть же, напротив, сама может создавать правила на основе "изучения" входной выборки.
Алгоритм и описание архитектуры нейронной сети для прогнозирования показателей эффективности изученного хорошо известного приложения описан в [7]. Авторы этой статьи в качестве входных данных использовали информацию о многократном исполнении этого приложения и смогли добиться очень хороших, точных результатов.
Также существуют публикации, в которых предложен метод оценки времени выполнения программы по ее исходному коду (см., например, [8]). Недостатком такого метода является то, что довольно часто он неприменим из-за недоступности исходного текста программы.
В данной работе предложен нейросетевой подход для прогнозирования времени запуска и завершения решения параллельной задачи (точнее, времени ожидания задачи в очереди и нахождения непосредственно в вычислительной системе на выполнении) в условиях пакетного режима работы многопроцессорной вычислительной системы под управлением системы управления заданиями. Эта проблема является частью более общей задачи планирования в распределенных системах, когда необходимо решать вопрос, на какой узел следует назначить задачу для выполнения. Кроме того, прогнозируя время вычисления задачи при разных требованиях на системные ресурсы, владелец задачи получит возможность более эффективно использовать процессорное время и подбирать наиболее приемлемые параметры для запуска задачи.
Итак, с помощью искусственной нейронной сети мы получаем на выходе два значения — время ожидания задачи в очереди (waiting time) и время, проведенное этой задачей непосредственно в вычислительной системе (flow time). Особенность предлагаемого подхода состоит в том, что используемые для получения прогноза характеристики параллельной программы и конкретного алгоритма планирования могут быть получены без вмешательства в текст программы: они могут быть собраны с использованием стандартных средств операционной системы и установленной на вычислителе системы планирования задач. Кроме того, они универсальны: к ним имеется доступ практически в любой многопроцессорной системе. Эти характеристики включают:
• время постановки задачи в очередь;
• количество запрашиваемых процессоров, необходимых для счета;
• максимальное запрашиваемое время счета задачи;
• загрузку вычислителя в момент постановки задачи в очередь (количество занятых процессоров, количество задач, ожидающих начала выполнения, и т.д.);
• размер бинарного файла программы.
База данных для хранения собранной статистики, а также система сбора и анализа данных о работе вычислительной системы описаны в [9]. Еще раз подчеркнем, что для сбора всех перечисленных характеристик не требуется никаких сведений об исходном коде программы.
Для повышения точности прогнозирования предлагается в качестве дополнительных параметров использовать характеристики, полученные в результате предыдущих запусков задачи (история выполнения). К этим характеристикам можно отнести:
• усредненное по всем предыдущим запускам время выполнения задачи для данного числа процессоров;
• запрашиваемое время счета задачи;
• средний по всем запускам размер исполняемого файла программы.
Эти данные также можно получить только средствами операционной системы и планировщика, не внося никаких изменений в код программы, как это делается обычно для сбора трасс.
2. Архитектура нейронных сетей. Искусственная нейронная сеть — это математическая модель, настраиваемая при помощи обучения, которая отображает набор входных параметров на набор выходных значений. На рис. 1 и 2 изображены примеры архитектур нейронных сетей. Нейронная сеть состоит из элементов-нейронов, которые имеют несколько входных и одно выходное значение. Выходные сигналы умножаются на весовые коэффициенты и подаются в качестве входных сигналов другим элементам нейросети. Если сеть состоит из нескольких слоев, то первым слоем считается входной слой, и далее сигналы подаются на следующие слои, пока не достигнут последнего, выходного слоя (остальные слои скрытые).
Рис. 1. Двуслойная сигмоидальная сеть с одним скрытым слоем
входные рекуррентный слои
контекстный слои
Рис. 2. Рекуррентная сеть Элмана
На рис. 1 показана двуслойная сигмоидальная нейросеть с одним скрытым слоем, а на рис. 2 — рекуррентная сеть Элмана. Сеть Элмана включает два скрытых слоя — рекуррентный и линейный. Эти два типа нейронных сетей и были использованы для прогнозирования времени ожидания и выполнения задач.
Для получения приемлемых результатов входные данные перед подачей на вход нейронной сети были соответствующим образом обработаны. Задачи разделялись на четыре группы:
• задачи, среднее время выполнения которых меньше 100 с;
• задачи, выполняющиеся в среднем больше 100 и меньше 1000 с;
• задачи со средним временем выполнения от 1000 до 5000 с;
• задачи, выполняющиеся дольше 5000 с.
Для каждой группы были сформированы нейронные сети со своим набором параметров. Кроме того, нетипичные "случайные" данные ("шум") были изъяты из входной выборки. Уменьшение количества "шума" предполагает, что разница между двумя разными прогонами задачи (с определенными параметрами, на одинаковом количестве процессоров) должна быть как можно меньше. И наконец, входные и выходные данные были масштабированы так, что попадали в промежуток [—1; 1].
3. Обучение нейронной сети. На каждом шаге обучения новый элемент обучающей выборки подается на вход нейронной сети. На каждом слое нейроны формируют сумму взвешенных входных значений. Эта сумма подается на вход функции активации, которая и формирует выходное значение нейрона. (В данной работе использовались полносвязные нейронные сети с сигмоидальной функцией активации.) После получения прогноза для данной задачи (одного из элементов входной выборки) веса нейросети пересчитываются в соответствии с величиной ошибки.
В табл. 1 собраны данные об ошибках обучения нейронных сетей, анализирующих задачи из разных групп. Легко видеть, что существенной разницы в результатах обучения сигмоидальной сети с одним скрытым слоем и рекуррентной сети Элмана нет. Как будет показано ниже, для величины ошибки прогнозирования данное наблюдение несправедливо. (Все исследования проводились с помощью пакета МАТЬАВ.)
Таблица 1
Ошибка обучения нейронных сетей
Группа задачи (согласно среднему времени выполнения), с Ошибка обучения
Сигмоидальная нейросеть с одним скрытым слоем Рекуррентная сеть Элмана
< 100 10_2-10_3 10"3
100-1000 10"4 10"4
1000-5000 10_4-10-5 10"4
> 5000 10"5 10"5
4. Результаты тестирования. На рис. 3 показана ошибка прогнозирования, полученная в результате работы сигмоидальной нейронной сети с одним скрытым слоем (разность между предсказанными и реальными значениями времени нахождения задач в вычислительной системе). Ошибка прогнозирования времени нахождения задач в вычислительной системе в результате работы рекуррентной сети Элмана показана на рис. 4. Заметим, что сеть Элмана выглядит более привлекательной для дальнейших исследований и дает более точный прогноз интересующих нас характеристик пользовательских заданий.
Рис. 3. Прогнозирование времени нахождения задачи в системе (сигмоидальная нейросеть с одним скрытым слоем)
Однако доля ошибочно предсказанных значений примерно одинакова у обеих нейросетей. Такая низкая точность прогноза — результат работы алгоритма по обновлению значений весов нейросети. Согласно алгоритму обратного распространения ошибки (с помощью которого проводилось обучение), происходит минимизация среднеквадратичной ошибки. Во время обучения те элементы обучающей выборки, на которых нейросеть выдавала большую абсолютную ошибку, получали большой вес даже в том случае, если относительная ошибка была ничтожно мала. В табл. 2 приведена оценка точности прогнозов.
1 35 69 103 137 171 205 239 273 307 341 Рис. 4. Прогнозирование времени нахождения задачи в системе (рекуррентная сеть Элмана)
Таблица 2
Точность прогнозирования характеристик потока задач, %
Нейросети Время ожидания Время выполнения
Сигмоидальная нейросеть с одним скрытым слоем 15 26,5
Рекуррентная сеть Элмана 15 18
Для экспериментов была использована вычислительная система Regatta (IBM eServer pSeries 690) [10]. Сбор данных по потоку задач проводился в период с сентября 2005 г. по май 2006 г. включительно.
Можно с уверенностью утверждать, что результаты тестирования предлагаемого подхода продемонстрировали применимость нейросетевых методов планирования к потоку задач, требующих большого объема вычислительных ресурсов.
Предложенный подход для решения задачи прогнозирования времени ожидания и счета программы в зависимости от параметров запуска, особенностей вычислительной системы и ее текущей загрузки может быть очень полезен для PSE-систем (Problem Solving Environments) — многопроцессорных распределенных систем для решения определенного класса задач [11]. Кроме того, можно его использовать при тестировании приложений, требующих больших вычислительных ресурсов. В обоих случаях заранее известен набор возможных задач, их параметры и характеристики хорошо изучены, от запуска к запуску меняются обычно только входные данные и число запрашиваемых процессоров. К системам, подобным PSE, можно отнести систему распределенной обрабоки экспериментальных данных [12], в рамках которой планируется реализовать предложенный подход для повышения эффективности использования вычислительных ресурсов, входящих в состав этой системы.
СПИСОК ЛИТЕРАТУРЫ
1. Гончар Д. Р. Мультиоценочный эвристический алгоритм распределения M заданий на N процессоров // Тр. науч. конф. "Методы и средства обработки информации". М.: Изд. отдел ф-та ВМиК МГУ, 2005. С. 537-540.
2. Гуз Д.С., Красовский Д.Р., Фуругян М.Г. Эффективные алгоритмы планирования вычислений в многопроцессорных системах реального времени // Тр. науч. конф. "Методы и средства обработки информации". М.: Изд. отдел ф-та ВМиК МГУ, 2005. С. 540-545.
3. IBM LoadLeveler for AIX 5L: Using and Administering Version 3 Release 2. [PDF] http://www.ibm.com/Redbooks/am2ug300.pdf
4. Sun ONE Grid Engine: administration and users guide. Sun ONE Grid Engine, enterprise édition administration and users guide. Sun ONE Grid Engine and Sun ONE Grid Engine, enterprise édition reference manual. [PDF] http://www.sun.com/GridWare.pdf
5. Portable Batch System. OpenPBS release 2.3 administration guide. [PDF] http://www.openpbs.org/docs/v2.3 admin.pgf
6. Т h ai n D., Tannenbaum Т., L i v n у M. Condor and the grid / / Grid computing: making the global infractructure a reality / Ed. by F. Berman, A.J.G. Hey, G. Fox. John Wiley, 2003. P. 299-336.
7. I рек E., Su pin ski B.R. de, Schultz M., McKee S.A. An approach to performance prediction for parallel applications // Euro-Par 2005 Parallel Processing. V. 3648/2005. Lisbon, 2005. P. 196-205.
8. Балашов В.В., Капитонова А.П., Костенко В.А.,Смелянский Р.Л., Ющенко Н.В. Методика оценки времени выполнения программ, оптимизированных под конкретную архитектуру процессора, по тексту программ на языке высокого уровня // Сб. докл. 1-й Междунар. конф. "Цифровая обработка сигналов и ее применения". Т. IV. М.: МЦНТИ, 2005. С. 203-220.
9. Булочникова Н.М., Горицкая В.Ю., Сальников А.Н. Система сбора и анализа статистики о работе вычислительной системы // Тр. науч. конф. "Методы и средства обработки информации". М.: Изд. отдел ф-та ВМиК МГУ, 2005. С. 136-141.
10. http://www.regatta.cs.msu.su/
11. http://www-cgi.cs.purdue.edu/cgi-bin/acc/pses.cgi
12. Воронов В. Ю., Г о р и ц к ая В.Ю.,Зленко П.А., Истомин Т.Е., Королев Л.Н., Мещеряков Д. К., Попова H.H., Сальников А.Н. Система обработки экспериментальных данных // Тр. науч. конф. "Методы и средства обработки информации". М.: Изд. отдел ф-та ВМиК МГУ, 2005. С. 213-219.
Поступила в редакцию 27.11.06
УДК 519.687.1
И. В. Машечкин, А. А. Смирнов
ПОИСК МЕСТ СОЗДАНИЯ КОНСИСТЕНТНЫХ КОНТРОЛЬНЫХ ТОЧЕК В ПАРАЛЛЕЛЬНЫХ ПРОГРАММАХ ПУТЕМ АНАЛИЗА ТРАССЫ ПРОГРАММЫ
(кафедра автоматизации систем вычислительных комплексов факультета ВМиК, e-mail: [email protected])
1. Введение. Контрольная точка (КТ) — информация о состоянии задачи, которая позволяет продолжить ее выполнение с данного момента времени. Механизм контрольных точек для параллельных программ применяется для обеспечения отказоустойчивости, а также для того, чтобы предоставить возможности более гибкого планирования задач в параллельной вычислительной системе [1].
Создание контрольных точек для параллельных программ, использующих библиотеку MPI, имеет свою специфику: кроме состояния каждой ветви как последовательной программы в контрольную точку входит состояние коммуникационной среды, также невозможно одновременно сохранить состояние всех ветвей параллельной программы. В силу этого для обеспечения корректного восстановления из контрольной точки вводятся ограничения на состояние задачи в момент создания контрольной точки. Контрольная точка называется консистентной, если при восстановлении из нее не будет потеряно или продублировано ни одно сообщение.
Рассмотрим механизм создания контрольных точек для параллельной MPI-программы [2] (библиотека libcheckpoint). Эта библиотека обеспечивает создание консистентных контрольных точек, если в момент создания контрольной точки выполнены следующие условия (в дальнейшем будем называть их критериями консистентности).
1. Ни один процесс не заблокирован в состоянии ожидания сообщения.
1 Работа выполнена при поддержке Российского фонда фундаментальных исследований, проект № 05-01-00719-а.