Преодоление первого сдерживающего фактора по широкому использованию


с. 1 с. 2

Введение


Создание многопроцессорных (параллельных) вычислительных систем (ПВС) является стратегической линией развития компьютерной техники, обусловливаемой существованием в любой текущий момент времени актуальных задач фундаментальной и прикладной науки, для анализа и исследования которых производительности существующих средств вычислительной техники оказывается недостаточно. Тем не менее практическое использование параллельных вычислительных систем не является столь широким, как это могло бы быть потенциально возможным. К основным сдерживающим факторам широкого распространения параллельных вычислений следует отнести большую стоимость и разнообразие архитектурного построения ПВС, существенно более высокую (по сравнению с последовательным программированием) трудоемкость разработки эффективных параллельных алгоритмов и программ.

Преодоление первого сдерживающего фактора по широкому использованию параллельных вычислений (высокая стоимость ПВС) может быть получено на пути построения кластерных вычислительных систем (clusters). Под кластером обычно понимается множество отдельных компьютеров, объединенных в сеть, для которых при помощи специальных аппаратно-программных средств обеспечивается возможность унифицированного управления (single system image), надежного функционирования (availability) и эффективного использования (performance). Кластеры могут быть образованы на базе уже существующих у потребителей отдельных компьютеров либо же сконструированы из типовых компьютерных элементов, что обычно не требует значительных финансовых затрат. Применение кластеров может также в некоторой степени снизить проблемы, связанные с разработкой параллельных алгоритмов и программ, поскольку повышение вычислительной мощности отдельных процессоров позволяет строить кластеры из сравнительно небольшого количества (несколько десятков) отдельных компьютеров (lowly parallel processing). Это приводит к тому, что для параллельного выполнения в алгоритмах решения вычислительных задач достаточно выделять только крупные независимые части расчетов (coarse granularity), что, в свою очередь, снижает сложность построения параллельных методов вычислений и уменьшает потоки передаваемых данных между компьютерами кластера. Вместе с этим следует отметить, что организация взаимодействия вычислительных узлов кластера при помощи передачи сообщений обычно приводит к значительным временным задержкам, что накладывает дополнительные ограничения на тип разрабатываемых параллельных алгоритмов и программ.

Решение проблемы разнообразия архитектур параллельных вычислительных систем и обеспечение возможности создания мобильных (переносимых между различными компьютерными платформами) программ лежит на пути разработки стандартизованного базового системного программного обеспечения для организации параллельных вычислений. Основным стандартом, широко используемым в настоящее время в практических приложениях, является интерфейс передачи сообщений (message passing interface - MPI).

Принципы работы MPICH


MPICH для Windows состоит из следующих компонентов:

Менеджер процессов smpd.exe, который представляет собой системную службу (сервисное приложение). Менеджер процессов ведёт список вычислительных узлов системы, и запускает на этих узлах MPI-программы, предоставляя им необходимую информацию для работы и обмена сообщениями.

Заголовочные файлы (.h) и библиотеки стадии компиляции (.lib), необходимые для разработки MPI-программ.

Библиотеки времени выполнения (.dll), необходимые для работы MPI-программ.

Дополнительные утилиты (.exe), необходимые для настройки MPICH и запуска MPI-программ.
Все компоненты, кроме библиотек времени выполнения, устанавливаются по умолчанию в папку C:\Program Files\MPICH2; dll-библиотеки устанавливаются в C:\Windows\System32.
Менеджер процессов является основным компонентом, который должен быть установлен и настроен на всех компьютерах сети (библиотеки времени выполнения можно, в крайнем случае, копировать вместе с MPI-программой). Остальные файлы требуются для разработки MPI-программ и настройки некоторого «головного» компьютера, с которого будет производиться их запуск.
Менеджер работает в фоновом режиме и ждёт запросов к нему из сети со стороны «головного» менеджера процессов (по умолчанию используется сетевой порт 8676). Чтобы как-то обезопасить себя от хакеров и вирусов, менеджер требует пароль при обращении к нему. Когда один менеджер процессов обращается к другому менеджеру процессов, он передаёт ему свой пароль. Отсюда следует, что нужно указывать один и тот же пароль при установке MPICH на компьютеры сети.

Рисунок 1. Схема работы MPICH на кластере.
Запуск MPI-программы производится следующим образом (смотрите рисунок 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-программу на одном компьютере.

Установка MPICH в Windows


Вначале нужно скачать последнюю версию MPICH2 с этой страницы: http://​www.​mcs.​anl.​gov/​research/​projects/​mpich2/​downloads/​index.php?​s=downloads. Если у вас 32-х битная версия Windows, то вам подойдёт дистрибутив под названием «Win32 IA32 (binary)».
Загруженный инсталлятор необходимо запустить с привилегиями администратора на всех компьютерах, на которых вы планируете запускать MPI-программы. Если у вас Windows Vista с включённым User Account Control (UAC), то для запуска инсталлятора с привилегиями администратора выполните следующие действия:

Найдите в меню Пуск → Программы → Стандартные программу «Командная строка», нажмите на неё правой кнопкой мыши, и выберите пункт «Запуск от имени администратора» (рисунок 2). Подтвердите свои намерения и введите пароль, если необходимо.

Введите в командной строке полный путь к программе инсталляции и нажмите Enter (рисунок 3).

Рисунок 2. Запуск командной строки с привилегиями администратора.

Рисунок 3. Запуск инсталлятора из командной строки
Во время установки вам нужно будет ввести пароль для доступа к менеджеру процессов SMPD. Вы должны ввести одинаковый пароль на всех компьютерах:

Рисунок 4. Указание пароля для доступа к менеджеру процессов

В окне указания пути установки рекомендую оставить каталог по умолчанию. Кроме того, поставьте точку в пункте «Everyone»:

Рисунок 5. Указание пути установки


Если Windows спросит, разрешить ли доступ в сеть программе smpd.exe, то нажмите «Разрешить».
Теперь, скорее всего, MPICH2 правильно установлен на ваш компьютер. Однако, прежде чем переходить к настройке, обязательно следует проверить две вещи: запущена ли служба «MPICH2 Process Manager», и разрешён ли этой службе доступ в сеть.
Нажмите Пуск → Настройка → Панель управления → Администрирование → Службы. Вы должны увидеть «MPICH2 Process Manager» в списке служб (рису­нок 6). Эта служба должна работать. Если служба в списке отсутствует, то вы, ви­димо, не запустили инсталлятор от имени администратора.

Рисунок 6. Служба «MPICH2 Process Manager» в списке служб
Теперь проверим, разрешён ли доступ в сеть для MPICH. Зайдите в Пуск → Настройка → Панель управления → Брандмауэр Windows. Там нажмите «Разрешение запуска программы через брандмауэр Windows». Вы должны увидеть в списке разрешённых программ «Process launcher for MPICH2 applications» и «Process manager service for MPICH2 applications»:

Рисунок 7. Программы MPICH в списке исключений брандмауэра
Если какая-то из перечисленных программ отсутствует в списке разрешённых программ, то вы можете добавить её вручную. Для этого нажмите кнопку «Добавить программу...», и добавьте C:\​program files\​mpich2\​bin\​mpiexec.exe, если отсутствует «Process launcher for MPICH2 applications», и C:\​program files\​mpich2\​bin\​smpd.exe, если отсутствует «Process manager service for MPICH2 applications».

с. 1 с. 2

скачать файл

Смотрите также: