Mpich2 для windows 10

Установка и настройка пакета MPICH2

1. Скачать пакет MPICH2 по одной из ссылок:

2. На каждом компьютере, который планируется использовать в вычислительном кластере, выполнить установку данного пакета с правами администратора. В начале установки инсталлятор попросит указать пароль, который будет использоваться установленным ПО для связи между узлами кластера. Пароль должен быть одинаковым на всех компьютерах. Устанавливать в папку по умолчанию или в любую папку, путь к которой не содержит русских букв; при этом обязательно выбрать установку для всех пользователей.

3. На каждом компьютере через «Панель управления» Windows создать нового пользователя (например, с именем «MPI») и обязательно задать ему пароль. На всех компьютерах кластера созданные пользователи должны быть «одинаковыми» с точки зрения выбранных имени и пароля. Не требуется давать созданным пользователям права администратора. В дальнейшем для работы установленного пакета входить в Windows под именем данного пользователя не нужно: достаточно лишь, чтобы такой пользователь был создан на данном компьютере.

4. Убедиться, что на каждом компьютере в службах Windows появилась и работает служба «Process manager service for MPICH2 applications». Если служба не появилась, запустить файл C:\Program Files\MPICH2\bin\smpd.exe с параметром «‑install».

5. На каждом компьютере кластера дать файлам

C:\Program Files\MPICH2\bin\smpd.exe C:\Program Files\MPICH2\bin\mpiexec.exe

полный доступ к сети, добавив их в исключения файрвола (если таковой используется на компьютере). Как вариант – можно полностью отключить файрвол.

6. Объединить все компьютеры по локальной сети (проводной или WiFi) в «рабочую группу» (например, с именем Workgroup). С помощью команды ping убедиться, что все компьютеры «видят» друг друга.

7. На одном из компьютеров (на любом) создать пустую папку и дать к ней общий доступ по сети для чтения/записи. Проследить за тем, чтобы количество пользователей, одновременно имеющих доступ к этой папке, было не меньше количества хостов (компьютеров, подключенных к сети), считая и тот компьютер, на котором эта папка создана. Убедиться, что все хосты имеют полный доступ к этой папке.

8. На каждом хосте запустить программу

C:\Program Files\MPICH2\bin\ wmpiregister.exe

В появившемся окне вписать имя и пароль пользователя Windows, который был заведен в пункте 3. После ввода нажать кнопку «Register». Если пользователь/пароль были введены с ошибкой (или по какой-то причине изменились), то сначала нужно нажать кнопку «Remove» (параметр будет удален из реестра), после чего повторно ввести имя/пароль и нажать на кнопку «Register».

9. На каждом хосте запустить программу

В появившемся окне в списке «Domain» выбрать название рабочей группы, после чего нажать кнопку «Get Hosts». В нижней белой табличке появятся имена всех хостов, найденных программой и доступных в данный момент.

Нажать кнопку «Scan Hosts». Все найденные хосты (включая и тот, на котором запущен wmpiconfig.exe) должны быть отмечены зеленым цветом. Если это так, то вычислительный кластер создан и готов к работе. Следует нажать кнопки «Apply All» и «OK» для сохранения результата.

Если какие-то хосты отмечены серым цветом, то к ним с данного компьютера нет доступа. Скорее всего, проблема заключается в настройках файрвола на этом или «сером» компьютере. Для проверки рекомендуется попробовать временно отключить файрвол и снова нажать «Scan Hosts».

Читайте также:  Драйвера qualcomm для windows 10 x64 4pda

10. Протестировать работоспособность кластера. Для этого сделать следующее.

11. В общую папку, выделенную в пункте 7, скопировать файл

12. На одном из хостов кластера (на любом, если пункт 9 выполнен нормально на всех хостах) запустить программу

В появившемся окне справа от верхнего пустого поля нажать кнопку «…», зайти в общую сетевую папку и выбрать файл cpi.exe. Путь и название файла отобразятся в верхнем поле.

13. Внизу окна выбрать флажок «more options». Окно будет развернуто вниз. В строке «hosts» вручную вписать имена всех хостов, которые будут участвовать в распределенных вычислениях. Имена хостов можно взять из списка, который появляется в программе wmpiconfig.exe после нажатий кнопки «Get Hosts» (см. пункт 9).

14. В верхней части окна под кнопкой «…» указать количество процессов, на которое будет распараллелена решаемая задача. Количество процессов рекомендуется выбирать равным количеству процессоров (на хостов, а процессоров) в кластере. Например, если в кластер входят пять компьютеров с двухъядерными процессорами, то следует указать число 10.

15. Установить флажок «run in a separate window». Также можно щелкнуть на кнопке «Show Command» – будет отображена командная строка, которую генерирует оболочка wmpiexec.exe, запуская «главную» программу mpiexec.exe.

16. Нажать кнопку «Execute». Если наша программа смогла соединиться со всеми хостами, а все хосты смогли добраться до файла «cpi.exe», лежащего в общей папке, то в появившемся окне будет сообщение на ввод: «Enter the number of intervals: (0 quits) ». Если данное сообщение не появилось, то где-то что-то не работает.

17. Ввести число 1000000000 и нажать «Enter». Через некоторое время (от 10 секунд до 1 минуты) появится результат с указанием количества секунд, затраченных на вычисление.

18. Закрыть окно, и в окне программы wmpiexec.exe указать число процессов, равное количеству хостов (а не процессоров) кластера. Нажать кнопку «Execute», ввести 1000000000 и дождаться появления результата. Поскольку мы (для двухъядерных компьютеров) уменьшили число процессоров в два раза, то программа должна выполняться приблизительно в два раза дольше.

19. Если число 1000000000 слишком велико для используемых компьютеров (программа работает больше 1 минуты), то программу можно прервать и в дальнейшем использовать меньшие числа (например, 10000000). Если же программа срабатывает слишком быстро (1-2 секунды или меньше), то для повышения точности эксперимента число можно увеличить.

20. Если все работает, то вычислительный кластер настроен, протестирован и готов к работе. Дальнейшей задачей является настройка компилятора Visual C++ для работы с библиотекой MPICH2.

MPICH2

Review

Free Download

specifications

Powerful, accessible and portable package that enables you to perform research in MPI through an easy-to-extend modular framework

MPICH2 is a Message Passing Interface (MPI) implementation that provides the components, runtimes and the tools developers require in order to compile and run applications that rely on this standard.

Powerful programming package for MPI programs

The MPI protocol is used in parallel computer programming, with practical use in creating portable message-passing applications in the Fortran and C programming languages. MPICH2 is compatible with MPI-1, MPI-2 and MPI-3, allowing one-sided communication and dynamic process management.

The package includes an extensive modular framework that works together with all the other components in order to enable developers to compile and run MPI applications.

Читайте также:  Packard bell ts11 hr драйвера для windows 10

Easily compile and execute MPI programs

MPICH2 must be installed on each workstation you want to launch MPI programs on. It bundles libraries and components required for the compiling process, along with executables for the process management utilities.

The process manager is a console program that can also be run as a Windows service in order to allow any user to launch compiled MPI programs. The ‘MPIEXEC wrapper’ provides an interface for running MPI applications, with options for setting the number of processes to run in parallel.

The configuration tool enables you to acquire information about hosts in your domain and modifying functioning parameters.

Advanced MPI implementation aimed at experienced programmers

MPICH2 helps developers work with the MPI standard, providing a powerful programming package. It supports various computation platforms and requires advanced knowledge of C and Fortran in order to unlock its full potential.

MPICH

MPICH (сокр. от англ. “Message Passing Interface CHameleon”) – бесплатная и одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как открытых, так и коммерческих.

До ноября 2012 года существовали две ветви исходных кодов: MPICH1 и MPICH2. Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Аргоннской национальной лаборатории США, с участием компаний IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, Business, а также Университета штата Огайо. Начиная с релиза в ноябре 2012 проект MPICH2 был переименован обратно в “MPICH”, но уже версии 3.0. Начиная с этой версии объявлена полная поддержка стандарта MPI-3.

Основные особенности MPICH

  • Полная совместимость со спецификацией MPI-1;
  • Наличие интерфейса в стиле MPI-2 с функциями для языка C ++ из спецификации MPI-1;
  • Наличие интерфейса с процедурами языка FORTRAN-77/90;
  • Есть реализация для Microsoft Windows NT (несовместима с UNIX-реализацией);
  • Поддержка большого числа архитектур, в том числе кластеров, SMP и т. д .;
  • Частичная поддержка MPI-2;
  • Частичная поддержка параллельного ввода-вывода – ROMIO;
  • Наличие средств трассировки и протоколирования (SLOG-based);
  • Наличие средств визуализации производительности параллельных программ (upshot и jumpshot);
  • Наличие в составе MPICH тестов производительности и проверки функционирования системы.

Сторонние разработки, основанные на MPICH

  • MPICH-GM
  • MVAPICH
  • MVICH (в настоящее время разработка прекращена)
  • Intel MPI
  • HP MPI
  • Voltaire MPI

Недостатки MPICH

Невозможность запуска процессов во время работы программы и отсутствие средств мониторинга текущего состояния системы.

Установка и начала использования библиотеки MPI

Иногда необходимо запустить приложение на нескольких машинах (или процессорах), чтобы улучшить производительность (т.е. уменьшить время выполнения). Можно создать компьютерную сеть для последующего запуска приложения распределённо по всем узлам. При разработке такого приложения необходимо организовать обмен сообщениями. Я знаю две реализации:

  • использование сокетов и работа с OS API напрямую,
  • использование MPI.

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

Установка библиотеки MPICH2 под Windows

Для того чтобы начать работу с библиотекой MPICH2, необходимо скачать совместимую с используемой операционной системой версию продукта здесь. Для ОС Windows – это установочный пакет формата MSI, поэтому инсталляция библиотеки проходит стандартным образом. Важно, что установку в этом случае надо проводить для всех пользователей системы.

Читайте также:  Как создать еще одного пользователя windows

Теперь необходимо добавить два основных исполняемых файла библиотеки mpiexec.exe и smpd.exe в список правил брандмауэра. Это необходимо, поскольку, при организации кластера используется сеть и доступ к каждому узлу сети должен быть разрешен для компонентов MPI. Конкретные настройки зависят от типа используемого брандмауэра.

На следующем этапе необходимо создать пользователя в системе, от имени которого будут исполняться компоненты библиотеки. Важно, что данный пользователь обязательно должен иметь свой пароль, т.к. MPICH2 не позволяет зарегистрировать исполняющего пользователя с пустым паролем. Регистрация осуществляется с помощью компонента wmpiregister.exe, находящегося в папке bin библиотеки и имеющего понятный оконный интерфейс:

Однако, это возможно сделать, используя консольную команду [путь_к_библиотеке]/bin/mpiexec -register.

Установка практически завершена. Осталось проверить правильность всех сделанных настроек. Для этой цели в папке examples есть примеры программ с параллельными алгоритмами. Для запуска можно использовать компонент wmpiexec.exe, который использует оконный интерфейс, который не нуждается в дополнительных комментариях.

Другой путь для исполнения приложений с использованием MPI – через консоль, например, написав подобную команду [путь_к_библиотеке]/bin/mpiexec -n 2 cpi.exe, где -n 2 указывает количество задействованных процессов (здесь их 2), а cpi.exe – это имя исполняемого приложения. Для простоты работы через консоль советую добавить в переменную окружения PATH путь к mpiexec.exe. Если выполнение приложения производится на однопроцессорной машине, то происходит эмуляция многопроцессорности, т.е. проверять работоспособность своих приложений можно «не отходя от кассы».

Проверка работоспособности

В качестве IDE для разработки используется MVS 2005. Напишем программу, которая будет привествовать этот мир от имени разных новорожденных процессов процессов. Для этого используется пустой проект (empty project) с изменением некоторых настроек проекта.

Итак, в первую очередь добавим директории, где будут лежать подключаемые заголовочные файлы и файлы библиотеки. Если кто-то не знает, то делается это следующим образом:

  • Выбираем пункт меню Tools => Options.
  • В дропдауне “Show directories for:” выбираем пункт “Include files”.
  • Добавляем [путь_к_библиотеке]\Include
  • В дропдауне “Show directories for:” выбираем пункт “Library files”.
  • Добавляем [путь_к_библиотеке]\Lib
  • В Solution Explorer кликаем правой кнопкой мыши на проекте и выбираем add => existing item. Выбираем все файлы с расширением .lib в папке [путь_к_библиотеке]\Lib

Проект полностью готов для работы с MPI. Могу посоветовать создавать фильтр для файлов библиотеки, добавленных в проект, чтобы они не мешались. Теперь добавим cpp файл с кодом приложения:

#include «stdio.h»
#include «mpi.h»
#include «stdlib.h»
#include «math.h»

int ProcNum;
int ProcRank;

int main( int argc, char *argv[]) <
MPI_Status status;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);

printf( «From process %i: Hello, World!\n» , ProcRank);

* This source code was highlighted with Source Code Highlighter .

Компилируем его и запускаем полученный бинарник через wmpiexec на 4 процессах.

Как видим, мир поприветствовал каждый рождённый процесс.

Я умышленно приводил код без каких либо комментариев, а только с целью демонстрации работы библиотеки. В будущем я планирую посвятить статью списку функций MPI. Также интересной является тема избыточной параллельности и, вообще, вопрос когда стоит распарарллеливать приложение, а когда нет. Эти исследования также будут приведены позже. Поэтому у меня возник основной вопрос — сфера применимости в web технологиях? Пока мой интерес к параллельным вычислениям вызван другой проблемой: ускорение моделирования разного рода процессов.

Оцените статью