ВВЕДЕНИЕ 5
ГЛАВА 1. ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛЕНИЯ 8
1.1. Параллелизм в современных вычислительных системах 8
1.2. Классификация параллельных вычислительных систем 8
1.2.1. Уровни параллелизма 11
1.2.2. Архитектуры SMP и NUMA 11
1.2.3. Вычислительные сети 13
1.3. Обзор современных технологий организации параллелизма 13
1.3.1. OpenMP 14
1.3.2. OpenAAC 16
1.3.3. OpenCL 17
1.3.4. CUDA 19
1.3.5. MPI 20
1.3.6. PVM 24
1.3.7. BOINC 25
ГЛАВА 2. ОТКАЗОУСТОЙЧИВОСТЬ РАСПРЕДЕЛЁННЫХ СИСТЕМ. .28
2.1. Метод прямого восстановления 29
2.2. Метод обратного восстановления 29
2.2.1. Хранение журнала передачи сообщений 30
2.2.2. Хранение контрольных точек в локальной памяти узлов 30
2.3. Обзор существующих отказоустойчивых систем 30
2.3.1. Egida 30
2.3.2. Manetho 31
2.3.3. BLCR 31
2.3.4. CoCheck 32
2.4. Отказоустойчивость MPI 33
2.4.1. FT-MPI 34
2.4.2. MPICH-V 35
2.4.3. ULFM 36
2.5. Требования к новой системе 37
ГЛАВА 3. РАЗРАБОТКА ОТКАЗОУСТОЙЧИВОЙ РАСПРЕДЕЛЁННОЙ
СИСТЕМЫ 40
3.1. Описание реализации 41
3.2. Использование программной библиотеки 42
3.2.1. Инициализация программной библиотеки 43
3.2.2. Перехват вызовов MPI-функций 45
3.2.3. Получение информации об активных процессах 45
3.2.4. Завершение работы программной библиотеки 46
3.3. Инструкции для разработчика 46
3.4. Тестирование 49
ЗАКЛЮЧЕНИЕ 51
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 52
Чем дальше уходит развитие современной науки, и человечества в целом, тем быстрее растёт сложность проблем, возникающих перед учёными. Если на заре развития науки, людям хватало листка бумаги и примитивных калькуляторов, то, с течением времени, требования к точности и скорости вычислений значительно выросли, также как и их сложность и объёмы. Это привело к появлению вычислительных механизмов, машин, которые давали возможность решать эти проблемы. А с появлением в середине 20 века первых электронных вычислительных машин — компьютеров, сфера их применения охватила практически все области человеческой деятельности.
В современной науке компьютеры используются учёными для решения множества проблем — от расчёта простейших уравнений и формул, до сложнейших задач численного моделирования, требующих выполнения очень больших объёмов вычислений. Примеры таких задач — прогнозирование климатических изменений [1], предсказание геологических катаклизмов, эксперименты на коллайдерах [2], математическое моделирование химических и физических процессов [3], расшифровка генома человека и многие другие. Возможность решения таких задач выводит исследования на новый уровень, позволяя решать ранее неизвестные и казавшиеся невыполнимыми задачи. Это вынуждает человечество изобретать новые технологии и усовершенствовать уже использующиеся.
Но, современных персональных компьютеров, даже самых мощных, уже не хватает для решения подобных задач. Проблема разработки высокопроизводительных вычислительных систем является одной из наиболее сложных научно-технических задач на сегодняшний день. Для её решения существует несколько путей - увеличение мощности и быстродействия отдельных компьютеров или создание специализированных распределённых систем, наряду с разработкой различных методов параллельного программирования. Кажется, что разработчики центральных процессоров уже близки к физическим пределам, и, в ближайшем будущем, тактовые частоты уже не будут так стабильно расти [4]. Поэтому, разработчики пошли по пути увеличения количества вычислительных единиц в системе, стали появляться многопроцессорные и многокомпьютерные системы. Появление таких технологий сделало возможным объединение большого числа вычислительных единиц, для решения общей задачи, путём разбиения на мелкие подзадачи и параллельного их выполнения. Это позволило уменьшить время расчетов, по сравнению с одиночным персональным компьютером.
Наиболее доступной и дешёвой технологией из перечисленных является кластерная система, которая представляет собой совокупность нескольких персональных компьютеров, объединённых между собой по высокоскоростной сети в один «виртуальный суперкомпьютер». Компьютеры такой сети общаются между собой через отправку друг другу сообщений.
С увеличением количества элементов вычислительной системы растёт и вероятность отказа её компонентов [5, 6]. А существующие отказоустойчивые системы достаточно тяжеловесны и трудноразвёртываемы. Разработаны различные аппаратные и программные средства, направленные на уменьшение вероятности отказа компонентов вычислительной системы.
Например, для систем использующих технологию MPI, сбой одного узла или самого сервера приводит к остановке работы всей системы. Для решения этой проблемы существуют специальные методики и технологии предназначенные для быстрого восстановления работоспособности системы.
Именно такая технология используется в локальном вычислительном кластере, находящемся в Алтайском государственном университете. И именно с такой проблемой сталкиваются преподаватели и студенты его использующие.
Поэтому, целью данной работы будет модификация существующей распределённой системы, использующей технологию MPI для обеспечения большей отказоустойчивости.
Для достижения поставленной цели, необходимо решить следующие задачи:
1. Произвести анализ существующих методов организации параллелизма в вычислительных системах.
2. Произвести анализ существующих методов обеспечения отказоустойчивости распределённых систем.
3. Разработать программное обеспечение, позволяющее повысить отказоустойчивость вычислительной системы, использующей технологию MPI.
В ходе выполнения данной выпускной квалификационной работы было выполнено:
• произведён обзор существующих методов параллельного программирования;
• рассмотрены методы и средства организации распределённых вычислительных систем;
• произведён обзор существующих подходов и технологий, нацеленных на повышение отказоустойчивости распределённых систем;
• рассмотрены проблемы стандарта MPI и возможные способы их решения;
• разработана программная библиотека для повышения отказоустойчивости распределённой вычислительной системы, использующей MPI.
Результатом данной выпускной квалификационной работы является программная библиотека, которая представляет собой прозрачный слой между пользовательским приложением и библиотекой MPI. Разработанный программный продукт позволяет разработчику параллельных программ повысить отказоустойчивость разрабатываемых приложений с минимальной модификацией исходного кода.
Таким образом, цель, поставленную в выпускной квалификационной работе можно считать достигнутой.
1. Станкевич В. Чем занят суперкомпьютер? Компьютерное моделирование климата //Компьютер и жизнь.— 2008. — N 6. — С. 53.
2. Дрёмин И. М. Физика на Большом адронном коллайдере //УФН: журнал.
• 2009. — Т. 179, N 6. — C. 57-79.
3. Использование графических ускорителей для моделирования процессов и детонации /Л. И. Стамов //Материалы международной суперкомпьютерной конференции «Научный сервис в сети Интернет: все грани параллелизма» (г. Новороссийск, 23-28 сентября 2013 г.), 2013.
• C. 127-129.
4. Основы конструирования высокоскоростных электронных устройств. Под общей редакцией А. И. Белоуса /Белоус А. И., Солодуха В. А., Шведов С. В. — М.: ТЕХНОСФЕРА, 2017. — 872 с.
5. Bland W. Post-failure recovery of MPI communication capability: Design and rationale //International Journal of High Perfomance Computing Applications.
• 2013. — Т. 27, N 3. — pp. 244-254.
6. Cappello, F. Fault tolerance in petascale/exascale systems: Current knowledge, challenges and research opportunities //International Journal of High Perfomance Computing Applications. — 2009. — Т. 23, N 3. — pp. 212-226.
7. Summit - Oak Ridge Leadership Computing Facility [Электронный ресурс]
• Режим доступа: https://www.olcf.ornl.gov/olcf-resources/compute- systems/summit/. — Загл. с экрана.
8. Flynn M, J. Very high speed computers //Proceedings of the IEEE. — 1996.
• Vol. 54, N 12. — p. 1901.
9. SPMD model: past, present and future /Darema F. //Recent Advances in Parallel Virtual Machine and Message Passing Interface, 8th European PVM/MPI Users' Group Meeting, Santorini/Thera, Greece, September 23-26, 2001, Proceedings, 2001. — pp. 21-32.
10. Организация ЭВМ и систем: учебник для вузов /С.А. Орлов, Б.Я. Цилькер. — СПб.: Питер, 2011. — 688 с.
11. Вычислительные системы, сети и телекоммуникации: учебное пособие для вузов /В. Л. Бройдо, О. П. Ильина. — СПб.: Питер, 2009. — 720 с.
12. Intel Intrinsics Guide [Электронный ресурс]: — Режим доступа: https://software.intel.com/sites/landingpage/IntrinsicsGuide/. — Загл. с экрана.
13. Антонов А. С. Технологии параллельного программирования MPI и OpenMP: учеб. пособие. — М.: Издательство Московского университета, 2012. — 344 с.
14. Home - OpenMP [Электронный ресурс]: — Режим доступа: https://www.openmp.org/. — Загл. с экрана.
15. Specification | OpenACC [Электронный ресурс]: — Режим доступа: https://www.openacc.org/specification. — Загл. с экрана...