- •Предпроектный анализ
- •Введение
- •Анализ кластерных технологий в контексте лабораторного практикума
- •Типы кластеров
- •Кластеры высокой доступности
- •Кластеры распределения нагрузки
- •Вычислительные кластеры
- •Системы распределенных вычислений (grid)
- •Показатели эффективности параллельного алгоритма
- •Средства разработки и поддержки параллельных приложений
- •Принципы работы среды mpich
- •Кластер миит т-4700
- •Обоснование целесообразности разработки
- •Требования к документации
- •Требования к техническому обеспечению
- •Требования к рабочим станциям
- •Требования к разрабатываемому по
- •Требования к показателям назначения
- •Анализ исходных данных
- •Разработка лабораторного комплекса «кластерные системы»
- •Разработка методического обеспечения для лабораторного комплекса
- •Содержание лабораторных работ
- •Рабочее задание для лабораторной работы №1
- •Рабочее задание для лабораторной работы №2
- •Рабочее задание для лабораторной работы №3
- •Разработка программного обеспечения для лабораторного комплекса
- •Настройка mpich2
- •Создание общего сетевого ресурса
- •Описание хода лабораторной работы №1 Создание mpi-программы в Visual Studio
- •Листинг программы mpi-программы
- •Запуск mpi-программ
- •Балансировка
- •Результаты выполнения mpi-программы
- •Построение графиков
- •Лабораторная работа №2
- •Подготовка рабочего места для выполнения лабораторной работы №2
- •Описание хода лабораторной работы №2 Подключение к кластеру миит т-4700
- •Компиляция программы
- •Листинг программы mpi-программы
- •Составление скрипта задания
- •Запуск заданий
- •Занесение данных в таблицу
- •Построение диаграмм
- •Системотехнический расчёт: расчёт показателей эффективности вычислений
- •Описание показателей эффективности параллельных вычислений
- •Описание хода лабораторной работы №3
- •Анализ человеко-машинного взаимодействия
- •Обзор теории тестовых заданий (Item response theory).
- •Процедура расчёта
- •Построение характеристических кривых для заданий
- •Обсуждение результатов и дальнейших действий
- •Экономическая часть
- •Постановка экономической задачи.
- •Расчет затрат, связанных с разработкой лабораторного комплекса.
- •Экономическая эффективность
- •Расчёт показателей эффективности
- •Расчет затрат по эксплуатации лабораторного комплекса.
- •Расчёт эффективности разработки.
- •Список источников
- •Приложения
- •Приложение 1. Листинг разработанного по
- •Листинг программы Интерфейс для mpich
- •Листинг тестирующей mpi-программы
- •Приложение 2. Инструкция по написанию и запуску заданий на кластере миит т-4700.
Средства разработки и поддержки параллельных приложений
Message Passing Interface(MPI)— программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими.
MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Стандартизацией MPI занимается MPI Forum. В стандарте MPI описан интерфейс передачи сообщений, который должен поддерживаться как на платформе, так и в приложениях пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.
В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кэшем). Обе технологии могут использоваться совместно, дабы оптимально использовать в кластере многоядерные системы.
MPICH — самая распространённая бесплатная реализация, созданная в Арагонской национальной лаборатории (США). Существуют версии этой библиотеки для всех популярных операционных систем. К тому же, она бесплатна. Перечисленные факторы делают MPICH идеальным вариантом для того, чтобы начать практическое освоение MPI. MPICH2 соответствует стандарту MPI 2.0, отсюда и название.[3]
Принципы работы среды mpich
MPICH для Windows состоит из следующих компонентов:
Менеджер процессов smpd.exe, который представляет собой системную службу (сервисное приложение). Менеджер процессов ведёт список вычислительных узлов системы, и запускает на этих узлах MPI-программы, предоставляя им необходимую информацию для работы и обмена сообщениями.
Заголовочные файлы (.h) и библиотеки стадии компиляции (.lib), необходимые для разработки MPI-программ.
Библиотеки времени выполнения (.dll), необходимые для работы MPI-программ.
Дополнительные утилиты (.exe), необходимые для настройки MPICH и запуска MPI-программ.
Существует мнение, что smpd.exe является не менеджером процессов, а просто средством для их запуска. Это мнение обосновано тем, что полноценный менеджер процессов должен составлять расписание запуска процессов, осуществлять мониторинг и балансировку загрузки узлов. Однако в терминологии Арагонской лаборатории, smpd.exe называется «Process manager service for MPICH2 applications»
Все компоненты, кроме библиотек времени выполнения, устанавливаются по умолчанию в папку C:\Program Files\MPICH2; dll-библиотеки устанавливаются в C:\Windows\System32.
Менеджер процессов является основным компонентом, который должен быть установлен и настроен на всех компьютерах сети (библиотеки времени выполнения можно, в крайнем случае, копировать вместе с MPI-программой). Остальные файлы требуются для разработки MPI-программ и настройки некоторого «головного» компьютера, с которого будет производиться их запуск.
Менеджер работает в фоновом режиме и ждёт запросов к нему из сети со стороны «головного» менеджера процессов (по умолчанию используется сетевой порт 8676). Чтобы как-то обезопасить себя от хакеров и вирусов, менеджер требует пароль при обращении к нему. Когда один менеджер процессов обращается к другому менеджеру процессов, он передаёт ему свой пароль. Отсюда следует, что нужно указывать один и тот же пароль при установке MPICH на компьютеры сети.
Рисунок 1.1. Схема работы MPICH на кластере.
В современных кластерах сеть передачи данных обычно отделяется от управляющей сети
Запуск MPI-программы производится следующим образом (смотрите рисунок 1.1):
Пользователь с помощью программы Mpirun (или Mpiexec, при использовании MPICH2 под Windows) указывает имя исполняемого файла MPI-программы и требуемое число процессов. Кроме того, можно указать имя пользователя и пароль: процессы MPI-программы будут запускаться от имени этого пользователя.
Mpirun передаёт сведения о запуске локальному менеджеру процессов, у которого имеется список доступных вычислительных узлов.
Менеджер процессов обращается к вычислительным узлам по списку, передавая запущенным на них менеджерам процессов указания по запуску MPI-программы.
Менеджеры процессов запускают на вычислительных узлах несколько копий MPI-программы (возможно, по несколько копий на каждом узле), передавая программам необходимую информацию для связи друг с другом.
Очень важным моментом здесь является то, что перед запуском MPI-программа не копируется автоматически на вычислительные узлы кластера. Вместо этого менеджер процессов передаёт узлам путь к исполняемому файлу программы точно в том виде, в котором пользователь указал этот путь программе Mpirun. Это означает, что если вы, например, запускаете программу C:\proga.exe, то все менеджеры процессов на вычислительных узлах будут пытаться запустить файл C:\proga.exe. Если хотя бы на одном из узлов такого файла не окажется, произойдёт ошибка запуска MPI-программы.
Чтобы каждый раз не копировать вручную программу и все необходимые для её работы файлы на вычислительные узлы кластера, обычно используют общий сетевой ресурс. В этом случае пользователь копирует программу и дополнительные файлы на сетевой ресурс, видимый всеми узлами кластера, и указывает путь к файлу программы на этом ресурсе. Дополнительным удобством такого подхода является то, что при наличии возможности записи на общий сетевой ресурс запущенные копии программы могут записывать туда результаты своей работы.
Работа MPI-программы происходит следующим образом:
Программа запускается и инициализирует библиотеку времени выполнения MPICH путём вызова функции MPI_Init.
Библиотека получает от менеджера процессов информацию о количестве и местоположении других процессов программы, и устанавливает с ними связь.
После этого запущенные копии программы могут обмениваться друг с другом информацией посредством библиотеки MPICH. С точки зрения операционной системы библиотека является частью программы (работает в том же процессе), поэтому можно считать, что запущенные копии MPI-программы обмениваются данными напрямую друг с другом, как любые другие приложения, передающие данные по сети.
Консольный ввод-вывод всех процессов MPI-программы перенаправляется на консоль, на которой запущена Mpirun. Перенаправлением ввода-вывода занимаются менеджеры процессов, так как именно они запустили копии MPI-программы, и поэтому могут получить доступ к потокам ввода-вывода программ.
Перед завершением все процессы вызывают функцию MPI_Finalize, которая корректно завершает передачу и приём всех сообщений, и отключает MPICH.
Все описанные выше принципы действуют, даже если вы запускаете MPI-программу на одном компьютере.[4]