Как установить mpich на windows

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

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

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

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

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

Теперь необходимо добавить два основных исполняемых файла библиотеки 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);

  MPI_Finalize();
}


* This source code was highlighted with Source Code Highlighter.

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

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

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

Опубликовано 21‑го мая 2009 г.
Обновлено 25‑го марта 2010 г.

Ес­ли вы сде­ла­ли всё воз­мож­ное, а MPICH так и не за­ра­бо­тал, — по­про­буй­те ана­ло­гич­ное ре­ше­ние от Microsoft.

Смот­ри­те так­же мою ста­тью об OpenMP, пред­на­зна­чен­ном для вы­чис­ли­тель­ных си­стем с об­щей па­мя­тью

MPI (Message Passing Interface) — ин­тер­фейс об­ме­на со­об­ще­ни­я­ми (ин­фор­ма­ци­ей) меж­ду од­но­вре­мен­но ра­бо­таю­щи­ми вы­чис­ли­тель­ны­ми про­цес­са­ми. Он ши­ро­ко ис­поль­зу­ет­ся для со­зда­ния па­ра­л­лель­ных про­грамм для вы­чис­ли­тель­ных си­стем с рас­пре­де­лён­ной па­мя­тью (кла­сте­ров).

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

В дан­ной ста­тье речь пой­дёт об MPICH2. Двой­ка в на­зва­нии — это не вер­сия про­граммно­го обес­пе­че­ния, а но­мер то­го стан­дар­та MPI, ко­то­рый реа­ли­зо­ван в биб­лио­те­ке. MPICH2 со­от­вет­ству­ет стан­дар­ту MPI 2.0, от­сю­да и на­зва­ние. Здесь умест­но при­ве­сти ци­та­ту с офи­ци­аль­но­го сай­та (в мо­ём пе­ре­во­де):

MPICH2 — это быст­ро­дей­ствую­щая и ши­ро­ко пор­ти­ру­е­мая реа­ли­за­ция стан­др­та MPI (реа­ли­зо­ва­ны оба стан­дар­та MPI-1 и MPI-2). Це­ли со­зда­ния MPICH2 сле­дую­щие:

  1. Предо­ста­вить реа­ли­за­цию MPI, ко­то­рая эф­фек­тив­но под­дер­жи­ва­ет раз­лич­ные вы­чис­ли­тель­ные и ком­му­ни­ка­ци­он­ные плат­фор­мы, вклю­чая об­ще­до­ступ­ные кла­сте­ры (на­столь­ные си­сте­мы, си­сте­мы с об­щей па­мя­тью, мно­го­ядер­ные ар­хи­тек­ту­ры), вы­со­ко­ско­ро­ст­ные се­ти (Ethernet 10 ГБит/с, InfiniBand, Myrinet, Quadrics) и экс­клю­зив­ные вы­чис­ли­тель­ные си­сте­мы (Blue Gene, Cray, SiCortex).
  2. Сде­лать воз­мож­ны­ми пе­ре­до­вые ис­сле­до­ва­ния тех­но­ло­гии MPI с по­мо­щью лег­ко рас­ши­ря­е­мой мо­дуль­ной ст­рук­ту­ры для со­зда­ния про­из­вод­ных реа­ли­за­ций.

В даль­ней­шем бу­дем пред­по­ла­гать, что у вас име­ет­ся сеть из не­сколь­ких до­маш­них ком­пью­те­ров (бу­дем на­зы­вать их вы­чис­ли­тель­ны­ми уз­ла­ми), ра­бо­таю­щих под управ­ле­ни­ем Windows. Мож­но да­же на­стро­ить си­сте­му на двух но­ут­бу­ках, со­еди­нён­ных бес­про­вод­ной се­тью. Ес­ли у вас нет не­сколь­ких ком­пью­те­ров, объ­еди­нён­ных в сеть, — не от­чаи­вай­тесь. Для учеб­ных це­лей мож­но за­пус­кать все вы­чис­ли­тель­ные про­цес­сы и на од­ном ком­пью­те­ре. Ес­ли ком­пью­тер од­но­ядер­ный, то, ес­те­ствен­но, при­ро­ста быст­ро­дей­ствия вы не по­лу­чи­те, — толь­ко за­мед­ле­ние.

В ка­че­стве сре­ды раз­ра­бот­ки бу­дем ис­поль­зо­вать Visual Studio 2005 или 2008. Для удоб­ства из­ло­же­ния со­здан­ную ва­ми про­грам­му, ис­поль­зу­ю­щую MPI, и пред­на­зна­чен­ную для за­пус­ка на не­сколь­ких вы­чис­ли­тель­ных уз­лах, бу­дем на­зы­вать MPI-про­грам­мой.

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

Что­бы про­яс­нить осталь­ные раз­де­лы ста­тьи, я ре­шил на­чать из­ло­же­ние не с ин­ст­рук­ций по уста­нов­ке MPICH, а с прин­ци­пов её ра­бо­ты.

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

Су­ще­ству­ет мне­ние, что smpd.exe — ни­ка­кой не «ме­не­джер про­цес­сов», а про­сто сред­ство для их за­пус­ка. Это мне­ние обос­но­ва­но тем, что пол­но­цен­ный ме­не­джер про­цес­сов дол­жен со­став­лять рас­пи­са­ние за­пус­ка про­цес­сов, осу­ществ­лять мо­ни­то­ринг и ба­лан­си­ров­ку за­груз­ки уз­лов.

В этой ста­тье я при­дер­жи­ва­юсь тер­ми­но­ло­гии Ара­гон­ской ла­бо­ра­то­рии, ко­то­рая на­зы­ва­ет smpd.exe, как «Process manager service for MPICH2 applications»

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

Все ком­по­нен­ты, кро­ме биб­лио­тек вре­ме­ни вы­пол­не­ния, уста­нав­ли­ва­ют­ся по умол­ча­нию в пап­ку C:\Program Files\MPICH2; dll-биб­лио­те­ки уста­нав­ли­ва­ют­ся в C:\Windows\System32.

Ме­не­джер про­цес­сов яв­ля­ет­ся ос­нов­ным ком­по­нен­том, ко­то­рый дол­жен быть уста­нов­лен и на­стро­ен на всех ком­пью­те­рах се­ти (биб­лио­те­ки вре­ме­ни вы­пол­не­ния мож­но, в край­нем слу­чае, ко­пи­ро­вать вме­сте с MPI-про­грам­мой). Осталь­ные фай­лы тре­бу­ют­ся для раз­ра­бот­ки MPI-про­грамм и на­строй­ки не­ко­то­ро­го «го­лов­но­го» ком­пью­те­ра, с ко­то­ро­го бу­дет про­из­во­дить­ся их за­пуск.

Ме­не­джер ра­бо­та­ет в фо­но­вом ре­жи­ме и ждёт за­про­сов к не­му из се­ти со сто­ро­ны «го­лов­но­го» ме­не­дже­ра про­цес­сов (по умол­ча­нию ис­поль­зу­ет­ся се­те­вой порт 8676). Что­бы как-то обезопа­сить се­бя от ха­ке­ров и ви­ру­сов, ме­не­джер тре­бу­ет па­роль при об­ра­ще­нии к не­му. Ко­гда один ме­не­джер про­цес­сов об­ра­ща­ет­ся к дру­го­му ме­не­дже­ру про­цес­сов, он пе­ре­да­ёт ему свой па­роль. От­сю­да сле­ду­ет, что нуж­но ука­зы­вать один и тот же па­роль при уста­нов­ке MPICH на ком­пью­те­ры се­ти.

Схе­ма ра­бо­ты MPICH на кла­сте­ре

Схе­ма ра­бо­ты MPICH на кла­сте­ре

Ри­су­нок 1. Схе­ма ра­бо­ты MPICH на кла­сте­ре.
В со­вре­мен­ных кла­сте­рах сеть пе­ре­да­чи дан­ных обыч­но от­де­ля­ет­ся от управ­ляю­щей се­ти

За­пуск MPI-про­грам­мы про­из­во­дит­ся сле­дую­щим об­ра­зом (смот­ри­те ри­су­нок 1):

  1. Поль­зо­ватель с по­мо­щью про­грам­мы Mpirun (или Mpiexec, при ис­поль­зо­ва­нии MPICH2 под Windows) ука­зы­ва­ет имя ис­пол­ня­е­мо­го фай­ла MPI-про­грам­мы и тре­бу­е­мое чис­ло про­цес­сов. Кро­ме то­го, мож­но ука­зать имя поль­зо­ва­те­ля и па­роль: про­цес­сы MPI-про­грам­мы бу­дут за­пус­кать­ся от име­ни это­го поль­зо­ва­те­ля.
  2. Mpirun пе­ре­да­ёт све­де­ния о за­пус­ке ло­каль­но­му ме­не­дже­ру про­цес­сов, у ко­то­ро­го име­ет­ся спи­сок до­ступ­ных вы­чис­ли­тель­ных уз­лов.
  3. Ме­не­джер про­цес­сов об­ра­ща­ет­ся к вы­чис­ли­тель­ным уз­лам по спис­ку, пе­ре­да­вая за­пу­щен­ным на них ме­не­дже­рам про­цес­сов ука­за­ния по за­пус­ку MPI-про­грам­мы.
  4. Ме­не­дже­ры про­цес­сов за­пус­ка­ют на вы­чис­ли­тель­ных уз­лах не­сколь­ко ко­пий MPI-про­грам­мы (воз­мож­но, по не­сколь­ко ко­пий на каж­дом уз­ле), пе­ре­да­вая про­грам­мам не­об­хо­ди­мую ин­фор­ма­цию для свя­зи друг с дру­гом.

Очень важ­ным мо­мен­том здесь яв­ля­ет­ся то, что пе­ред за­пус­ком MPI-про­грам­ма не ко­пи­ру­ет­ся ав­то­ма­ти­че­ски на вы­чис­ли­тель­ные уз­лы кла­сте­ра. Вме­сто это­го ме­не­джер про­цес­сов пе­ре­да­ёт уз­лам путь к ис­пол­ня­е­мо­му фай­лу про­грам­мы точ­но в том ви­де, в ко­то­ром поль­зо­ватель ука­зал этот путь про­грам­ме Mpirun. Это озна­ча­ет, что ес­ли вы, на­при­мер, за­пус­ка­е­те про­грам­му C:\proga.exe, то все ме­не­дже­ры про­цес­сов на вы­чис­ли­тель­ных уз­лах бу­дут пы­тать­ся за­пу­стить файл C:\proga.exe. Ес­ли хо­тя бы на од­ном из уз­лов та­ко­го фай­ла не ока­жет­ся, про­изой­дёт ошиб­ка за­пус­ка MPI-про­грам­мы.

Что­бы каж­дый раз не ко­пи­ро­вать вруч­ную про­грам­му и все не­об­хо­ди­мые для её ра­бо­ты фай­лы на вы­чис­ли­тель­ные уз­лы кла­сте­ра, обыч­но ис­поль­зу­ют об­щий се­те­вой ре­сурс. В этом слу­чае поль­зо­ватель ко­пи­ру­ет про­грам­му и до­пол­ни­тель­ные фай­лы на се­те­вой ре­сурс, ви­ди­мый все­ми уз­ла­ми кла­сте­ра, и ука­зы­ва­ет путь к фай­лу про­грам­мы на этом ре­сур­се. До­пол­ни­тель­ным удоб­ством та­ко­го под­хо­да яв­ля­ет­ся то, что при на­ли­чии воз­мож­но­сти за­пи­си на об­щий се­те­вой ре­сурс за­пу­щен­ные ко­пии про­грам­мы мо­гут за­пи­сы­вать ту­да ре­зуль­та­ты сво­ей ра­бо­ты.

Ра­бо­та MPI-про­грам­мы про­ис­хо­дит сле­дую­щим об­ра­зом:

  1. Про­грам­ма за­пус­ка­ет­ся и ини­циа­ли­зи­ру­ет биб­лио­те­ку вре­ме­ни вы­пол­не­ния MPICH пу­тём вы­зо­ва функ­ции MPI_Init.
  2. Биб­лио­те­ка по­лу­ча­ет от ме­не­дже­ра про­цес­сов ин­фор­ма­цию о ко­ли­че­стве и ме­сто­по­ло­же­нии дру­гих про­цес­сов про­грам­мы, и уста­нав­ли­ва­ет с ни­ми связь.
  3. По­сле это­го за­пу­щен­ные ко­пии про­грам­мы мо­гут об­ме­ни­вать­ся друг с дру­гом ин­фор­ма­ци­ей по­сред­ством биб­лио­те­ки MPICH. С точ­ки зре­ния опе­ра­ци­он­ной си­сте­мы биб­лио­те­ка яв­ля­ет­ся ча­стью про­грам­мы (ра­бо­та­ет в том же про­цес­се), по­это­му мож­но счи­тать, что за­пу­щен­ные ко­пии MPI-про­грам­мы об­ме­ни­ва­ют­ся дан­ны­ми на­пря­мую друг с дру­гом, как лю­бые дру­гие при­ло­же­ния, пе­ре­даю­щие дан­ные по се­ти.
  4. Кон­соль­ный ввод-вы­вод всех про­цес­сов MPI-про­грам­мы пе­ре­на­прав­ля­ет­ся на кон­соль, на ко­то­рой за­пу­ще­на Mpirun. На­сколь­ко я по­ни­маю, пе­ре­на­прав­ле­ни­ем вво­да-вы­во­да за­ни­ма­ют­ся ме­не­дже­ры про­цес­сов, так как имен­но они за­пу­сти­ли ко­пии MPI-про­грам­мы, и по­это­му мо­гут по­лу­чить до­ступ к по­то­кам вво­да-вы­во­да про­грамм.
  5. Пе­ред за­вер­ше­ни­ем все про­цес­сы вы­зы­ва­ют функ­цию 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), то для за­пус­ка ин­стал­ля­то­ра с при­ви­ле­ги­я­ми ад­ми­ни­стра­то­ра вы­пол­ни­те сле­дую­щие дей­ствия:

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

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

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

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

За­пуск ин­стал­ля­то­ра из ко­манд­ной стро­ки

Ри­су­нок 3. За­пуск ин­стал­ля­то­ра из ко­манд­ной стро­ки

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

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

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

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

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

Ука­за­ние пу­ти уста­нов­ки

Ука­за­ние пу­ти уста­нов­ки

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

Ес­ли Windows спро­сит, раз­ре­шить ли до­ступ в сеть про­грам­ме smpd.exe, то на­жми­те «Раз­ре­шить».

Те­перь, ско­рее все­го, MPICH2 пра­виль­но уста­нов­лен на ваш ком­пью­тер. Од­на­ко, пре­жде чем пе­ре­хо­дить к на­строй­ке, обя­за­тель­но сле­ду­ет про­ве­рить две ве­щи: за­пу­ще­на ли служ­ба «MPICH2 Process Manager», и раз­ре­шён ли этой служ­бе до­ступ в сеть.

На­жми­те Пуск → На­строй­ка → Па­нель управ­ле­ния → Ад­ми­ни­стри­ро­ва­ние → Служ­бы. Вы долж­ны уви­деть «MPICH2 Process Manager» в спис­ке служб (ри­су­нок 6). Эта служ­ба долж­на ра­бо­тать. Ес­ли служ­ба в спис­ке от­сут­ству­ет, то вы, ви­ди­мо, не за­пу­сти­ли ин­стал­ля­тор от име­ни ад­ми­ни­стра­то­ра.

Служ­ба «MPICH2 Process Manager» в спис­ке служб

Служ­ба «MPICH2 Process Manager» в спис­ке служб

Ри­су­нок 6. Служ­ба «MPICH2 Process Manager» в спис­ке служб

Те­перь про­ве­рим, раз­ре­шён ли до­ступ в сеть для MPICH. Зай­ди­те в Пуск → На­строй­ка → Па­нель управ­ле­ния → Бранд­мау­эр Windows. Там на­жми­те «Раз­ре­ше­ние за­пус­ка про­грам­мы че­рез бранд­мау­эр Windows». Вы долж­ны уви­деть в спис­ке раз­ре­шён­ных про­грамм «Pro­cess laun­cher for MPICH2 ap­pli­ca­tions» и «Pro­cess ma­nager ser­vice for MPICH2 ap­pli­ca­tions»:

Про­грам­мы MPICH в спис­ке ис­клю­че­ний бранд­мау­э­ра

Ри­су­нок 7. Про­грам­мы MPICH в спис­ке ис­клю­че­ний бранд­мау­э­ра

Ес­ли ка­кая-то из пе­ре­чис­лен­ных про­грамм от­сут­ству­ет в спис­ке раз­ре­шён­ных про­грамм, то вы мо­же­те до­ба­вить её вруч­ную. Для это­го на­жми­те кноп­ку «До­ба­вить про­грам­му…», и до­бавь­те C:\​program files\​mpich2\​bin\​mpiexec.exe, ес­ли от­сут­ству­ет «Pro­cess laun­cher for MPICH2 ap­pli­ca­ti­ons», и C:\​program files\​mpich2\​bin\​smpd.exe, ес­ли от­сут­ству­ет «Pro­cess ma­na­ger ser­vice for MPICH2 ap­pli­ca­ti­ons».

На­строй­ка MPICH

Рас­смот­рим на­строй­ку MPICH на при­ме­ре кон­фи­гу­ра­ции из двух ком­пью­те­ров, объ­еди­нён­ных в ло­каль­ную сеть (Wi-Fi): один ком­пью­тер име­ет се­те­вое имя MrBig и IP-ад­рес 192.168.1.4, дру­гой — имя Small и ад­рес 192.168.1.3. Пред­по­ло­жим, что MPI-про­грам­мы мы хо­тим за­пус­кать с ком­пью­те­ра MrBIG. На обо­их ком­пью­те­рах уста­нов­ле­ны рус­ско­языч­ные вер­сии Windows. На MrBIG уста­нов­ле­на Windows Vista, на Small — Windows XP. Каж­дый ком­пью­тер име­ет двухъ­ядер­ный про­цес­сор.

Пре­жде все­го нуж­но со­здать на всех ком­пью­те­рах поль­зо­ва­те­ля с оди­на­ко­вым име­нем и па­ро­лем; от име­ни это­го поль­зо­ва­те­ля бу­дут за­пус­кать­ся MPI-про­грам­мы (ес­ли у вас один ком­пью­тер — этот шаг мо­же­те про­пу­стить). Про­ще все­го это сде­лать, уста­но­вив оди­на­ко­вый па­роль поль­зо­ва­те­лям Ад­ми­ни­стра­тор.

В Windows Vista учёт­ная за­пись «Ад­ми­ни­стра­тор» по умол­ча­нию от­клю­чё­на. Что­бы вклю­чить её, за­пу­сти­те ко­манд­ную стро­ку от име­ни ад­ми­ни­стра­то­ра (ри­су­нок 2), и вы­пол­ни­те ко­ман­ду net user Ад­ми­ни­стра­тор /active:yes. Что­бы убе­дить­ся, что учёт­ная за­пись ра­бо­та­ет, и уста­но­вить на неё па­роль, ре­ко­мен­дую зай­ти в си­сте­му с учёт­ной за­пи­сью «Ад­ми­ни­стра­тор», и уста­но­вить па­роль с по­мо­щью Пуск → На­строй­ка → Па­нель управ­ле­ния → Учёт­ные за­пи­си поль­зо­ва­те­лей → Из­ме­не­ние сво­е­го па­ро­ля.

Ес­ли хра­не­ние име­ни поль­зо­ва­те­ля и па­ро­ля в ре­ест­ре вам ка­жет­ся не­безопас­ным, то вы долж­ны бу­де­те всё вре­мя вво­дить эти дан­ные. В этом слу­чае ре­ко­мен­дую за­пу­стить Wmpiregister и на­жать кноп­ку «Re­move», так как мо­жет ока­зать­ся, что ка­кой-ни­будь ста­рый (и не­вер­ный) па­роль уже за­пи­сан в ре­ест­ре (на­при­мер, остал­ся с преды­ду­щей ин­стал­ля­ции MPICH)

Как уже бы­ло ска­за­но ра­нее, лю­бое дей­ствие си­сте­ма MPICH вы­пол­ня­ет от ука­зан­но­го име­ни поль­зо­ва­те­ля. Для то­го, что­бы спра­ши­вать имя поль­зо­ва­те­ля и па­роль, ис­поль­зу­ет­ся про­грам­ма Wmpiregister. Про­бле­ма в том, что имя поль­зо­ва­те­ля и па­роль спра­ши­ва­ют­ся до­ста­точ­но ча­сто, что мо­жет вы­зы­вать раз­дра­же­ние. Для то­го, что­бы это­го из­бе­жать, Wmpiregister мо­жет со­хра­нять имя поль­зо­ва­те­ля и па­роль в ре­ест­ре Windows.

За­пу­сти­те Wmpiregister на том ком­пью­те­ре, с ко­то­ро­го вы со­би­ра­е­тесь за­пус­кать MPI-про­грам­мы. Для это­го на­жми­те Пуск → Про­грам­мы → MPICH2 → wmpiregister.exe. Ок­но про­грам­мы вы­гля­дит сле­дую­щим об­ра­зом:

Ри­су­нок 8. Про­грам­ма Wmpiregister

По­яс­ню смысл кно­пок (спра­ва-на­ле­во):

  • «Cancel» — за­крыть про­грам­му без вы­пол­не­ния ка­ко­го-ли­бо дей­ствия.
  • «OK» — пе­ре­дать вве­дён­ные имя поль­зо­ва­те­ля и па­роль вы­зы­ваю­щей про­грам­ме. Ес­ли Wmpire­gister за­пу­ще­на на­ми как от­дель­ное при­ло­же­ние, то на­жа­тие кноп­ки OK эк­ви­ва­лент­но на­жа­тию кноп­ки Cancel.
  • «Remove» — на­жа­тие этой кноп­ки уда­ля­ет со­хра­нён­ные ра­нее имя поль­зо­ва­те­ля и па­роль из ре­ест­ра Windows.
  • «Register» — со­хра­ня­ет имя поль­зо­ва­те­ля и па­роль в ре­ест­ре.

Вве­ди­те имя поль­зо­ва­те­ля и па­роль в ок­не про­грам­мы и на­жми­те кноп­ку «Register». Долж­на по­явить­ся над­пись «Password encrypted into the Registry» (ри­су­нок 8). По­сле это­го ок­но про­грам­мы боль­ше не бу­дет по­яв­лять­ся при вы­пол­не­нии ка­ких ли­бо дей­ствий MPICH. Ес­ли вы за­хо­ти­те впо­след­ствии уда­лить имя поль­зо­ва­те­ля и па­роль из ре­ест­ра, то вам нуж­но бу­дет сно­ва за­пу­стить эту про­грам­му, и на­жать кноп­ку «Remove».

Те­перь нам нуж­но на­стро­ить ме­не­дже­ры про­цес­сов MPICH. Для это­го за­пу­сти­те на всех ком­пью­те­рах про­грам­му Wmpiconfig. Ес­ли все преды­ду­щие ша­ги сде­ла­ны пра­виль­но, то в по­ле «version» в ле­вой ко­лон­ке таб­ли­цы вы долж­ны уви­деть вер­сию уста­нов­лен­но­го ме­не­дже­ра про­цес­сов (ри­су­нок 9). Ес­ли ме­не­джер про­цес­сов не уста­нов­лен, или ему за­крыт до­ступ в сеть, то вы уви­ди­те над­пись «MPICH2 not installed or unable to query the host» в од­ном из по­лей ле­во­го столб­ца. В этом слу­чае об­ра­ти­тесь за по­мо­щью к преды­ду­ще­му раз­де­лу ста­тьи.

Про­грам­ма Wmpiconfig

Про­грам­ма Wmpiconfig

Ри­су­нок 9. Про­грам­ма Wmpiconfig

Wmpiconfig пред­на­зна­че­на для на­строй­ки ме­не­дже­ров про­цес­сов на те­ку­щем ком­пью­те­ре и дру­гих ком­пью­те­рах се­ти. Для это­го она под­со­еди­ня­ет­ся к ме­не­дже­рам про­цес­сов на вы­бран­ных ком­пью­те­рах, чи­та­ет имею­щие­ся у них на­строй­ки, и со­об­ща­ет им но­вые на­строй­ки, ес­ли нуж­но. Эле­мен­ты управ­ле­ния про­грам­мы Wmpiconfig вы­пол­ня­ют сле­дую­щие дей­ствия:

  • Сле­ва-вни­зу име­ет­ся спи­сок ком­пью­те­ров, с ко­то­ры­ми ра­бо­та­ет про­грам­ма на­строй­ки. Имя ком­пью­те­ра на бе­лом фо­не озна­ча­ет, что не бы­ло по­пы­ток свя­зать­ся с этим ком­пью­те­ром; зе­лё­ный фон озна­ча­ет, что связь про­из­ве­де­на успеш­но; се­рый фон озна­ча­ет, что при уста­нов­ле­нии свя­зи воз­ник­ла ошиб­ка. Уда­лить ком­пью­тер из спис­ка мож­но кла­ви­шей Del. Сле­ду­ет иметь в ви­ду, что этот спи­сок пред­на­зна­чен толь­ко для удоб­ства на­строй­ки, и не име­ет ни­ка­ко­го от­но­ше­ния к спис­ку ком­пью­те­ров, на ко­то­рых бу­дет за­пу­ще­на MPI-про­грам­ма.
  • Кноп­ка «Get Hosts» по­лу­ча­ет спи­сок ком­пью­те­ров в за­дан­ном до­ме­не или ра­бо­чей груп­пе (за­да­ёт­ся в вы­па­даю­щем спис­ке «Domain»). По­лу­чен­ный спи­сок за­ме­ня­ет имею­щий­ся спи­сок ком­пью­те­ров или, ес­ли на­жа­та кно­поч­ка «+», до­бав­ля­ет ком­пью­те­ры к те­ку­ще­му спис­ку.
  • Кноп­ка «Scan Hosts» по­лу­ча­ет на­строй­ки со всех ком­пью­те­ров спис­ка; кноп­ка «Scan for Versions» по­лу­ча­ет толь­ко но­ме­ра вер­сий.
  • Кноп­ка «Get Settings» по­лу­ча­ет те­ку­щие на­строй­ки то­го ком­пью­те­ра, имя ко­то­ро­го вве­де­но в по­ле вво­да «Host». При вы­бо­ре ком­пью­те­ра в спис­ке ком­пью­те­ров его имя ав­то­ма­ти­че­ски вво­дит­ся в по­ле «Host». Ес­ли на­жа­та кноп­ка «Click», то на­строй­ки бу­дут по­лу­че­ны ав­то­ма­ти­че­ски при вы­бо­ре ком­пью­те­ра из спис­ка.
  • Спра­ва в ок­не рас­по­ло­же­на таб­ли­ца на­стро­ек. Ес­ли вы хо­ти­те из­ме­нить ка­кие-ли­бо на­строй­ки, то нуж­но два­жды щёлк­нуть на со­от­вет­ствую­щем по­ле в пер­вом столб­це таб­ли­цы. Пу­стое по­ле озна­ча­ет, что ис­поль­зу­ет­ся на­строй­ка по умол­ча­нию, ука­зан­ная во вто­ром столб­це. На­строй­ки, пред­на­зна­чен­ные к из­ме­не­нию сле­ду­ет от­ме­чать уста­нов­кой га­лоч­ки сле­ва.
  • Кноп­ка «Apply» при­ме­ня­ет вы­де­лен­ные га­лоч­кой на­строй­ки к то­му ком­пью­те­ру, имя ко­то­ро­го на­хо­дит­ся в по­ле «Host». Кноп­ка «Apply All» при­ме­ня­ет на­строй­ки ко всем ком­пью­те­рам спис­ка.
  • Кноп­ка «Cancel» за­кры­ва­ет про­грам­му. На­сколь­ко я по­нял, дей­ствие кноп­ки «OK» ни­чем не от­ли­ча­ет­ся от дей­ствия кноп­ки «Cancel».

На том ком­пью­те­ре, с ко­то­ро­го пла­ни­ру­ет­ся за­пуск про­грамм, нуж­но ука­зать спи­сок до­ступ­ных вы­чис­ли­тель­ных уз­лов (ес­ли у вас один ком­пью­тер — пе­ре­хо­ди́те к раз­де­лу «за­пуск MPI-про­грамм»). Этот спи­сок нуж­но вве­сти (че­рез про­бел) в по­ле hosts ле­во­го столб­ца таб­ли­цы (ри­су­нок 10), и на­жать кноп­ку «Apply». На ри­сун­ке по­ка­зан при­мер, ко­гда сам ком­пью­тер, с ко­то­ро­го про­из­во­дит­ся за­пуск MPI-про­грамм, яв­ля­ет­ся од­ним из вы­чис­ли­тель­ных уз­лов.

Ука­зы­ва­ем спи­сок до­ступ­ных вы­чис­ли­тель­ных уз­лов

Ри­су­нок 10. Ука­зы­ва­ем спи­сок до­ступ­ных вы­чис­ли­тель­ных уз­лов

У ме­ня в се­ти имел­ся DNS-сер­вер, ко­то­рый не­вер­но пе­ре­во­дил имя од­но­го из ком­пью­те­ров в IP-ад­рес. По­это­му я вез­де в MPICH про­пи­сал IP-ад­ре­са вме­сто имён. Од­на­ко MPI-про­грам­мы всё рав­но не ра­бо­та­ли (за­пус­ка­лись, но не мог­ли об­ме­ни­вать­ся ин­фор­ма­ци­ей по се­ти). Пр­осмотр со­об­ще­ний об ошиб­ках по­ка­зал, что MPICH во вре­мя ра­бо­ты пе­ре­во­дит IP-ад­ре­са в име­на и об­рат­но. Так что боль­шо­го смыс­ла в ис­поль­зо­ва­нии IP-ад­ре­сов вме­сто имён не ока­за­лось. Про­бле­ма с DNS-сер­ве­ром ре­ша­лась сле­дую­щи­ми спо­со­ба­ми: 1) от­клю­че­ни­ем сер­ве­ра, 2) пе­ре­име­но­ва­ни­ем ком­пью­те­ра (что­бы сер­вер про не­го не знал), или 3) (ре­ко­мен­дуе­мый спо­соб) ука­за­ни­ем со­от­вет­ствия меж­ду име­на­ми ком­пью­те­ров и их IP-ад­ре­са­ми в фай­лах C:\​Windows\​System32\​drivers\​etc\​hosts на всех уз­лах

Что­бы из­бе­жать воз­мож­ных про­блем, свя­зан­ных с раз­ре­ше­ни­ем имён, ре­ко­мен­дую ис­поль­зо­вать IP-ад­ре­са вме­сто имен ком­пью­те­ров.

Те­перь про­ве­рим, ви­дят ли ме­не­дже­ры про­цес­сов друг дру­га по се­ти. Для это­го в про­грам­ме Wmpi­config на «глав­ном» ком­пью­те­ре нуж­но вве­сти в по­ле «Host» ад­рес про­ве­ря­е­мо­го ком­пью­те­ра и на­жать «Get Settings». Вы долж­ны уви­деть вер­сию уста­нов­лен­но­го ме­не­дже­ра про­цес­сов на вы­бран­ном ком­пью­те­ре. Ес­ли связь уста­но­вить не уда­ёт­ся — бу­дет па­у­за в не­сколь­ко се­кунд, по­сле че­го в по­след­ней стро­ке таб­ли­цы по­явит­ся со­об­ще­ние об ошиб­ке. Ес­ли до сих пор у вас всё шло хо­ро­шо, то сле­ду­ет про­ве­рить сеть: убе­дить­ся, что ком­пью­те­ры «ви­дят» друг дру­га, по­про­бо­вать от­клю­чить бран­мау­э­ры, и то­му по­доб­ное. Так­же про­верь­те, сов­па­да­ет ли кон­т­роль­ная фра­за (по­ле phrase) на всех ком­пью­те­рах.

Со­зда­ние об­ще­го се­те­во­го ре­сур­са

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

Со­здай­те пап­ку (на­при­мер, име­ю­щую имя «MPI»), в ко­то­рую вы бу­де­те вы­кла­ды­вать MPI-про­грам­мы, на­жми­те на неё пра­вой кноп­кой мы­ши, и вы­бе­ри­те «Свой­ства». В по­явив­шем­ся ок­не вы­бе­ри­те вклад­ку «До­ступ» (ри­су­нок 11), в ко­то­рой на­жми­те кноп­ку «До­пол­ни­тель­ный до­ступ…». В по­явив­шем­ся ок­не «До­пол­ни­тель­ный об­щий до­ступ» по­ставь­те га­лоч­ку «От­крыть об­щий до­ступ к этой пап­ке», и уста­но­ви­те «чис­ло од­но­вре­мен­ных поль­зо­ва­те­лей» та­ким, что­бы оно пре­вы­ша­ло ко­ли­че­ство ком­пью­те­ров се­ти, пред­на­зна­чен­ных для за­пус­ка MPI-про­грамм:

Ок­но свойств пап­ки

Ри­су­нок 11. Ок­но свойств пап­ки

На­жми­те «OK» в ок­не «До­пол­ни­тель­ный об­щий до­ступ» и пе­рей­ди­те во вклад­ку «Безопас­ность». Там на­жми­те кноп­ку «Из­ме­нить» (ри­су­нок 12), по­явит­ся ок­но «Раз­ре­ше­ния для [имя пап­ки]». В этом ок­не на­жми­те кноп­ку «До­ба­вить…», по­явит­ся ок­но вы­бо­ра объ­ек­та для до­бав­ле­ния (поль­зо­ва­те­ля или груп­пы). Вве­ди­те в по­ле вво­да «Все» (или «All», ес­ли у вас ан­глий­ская вер­сия Windows):

До­бав­ле­ние раз­ре­ше­ний для до­сту­па к пап­ке

Ри­су­нок 12. До­бав­ле­ние раз­ре­ше­ний для до­сту­па к пап­ке

На­жми­те кноп­ку «OK» в двух ок­нах. Во вклад­ке «Безопас­ность» в верх­нем спис­ке долж­на до­ба­вить­ся стро­ка «Все», при вы­бо­ре ко­то­рой в спис­ке раз­ре­ше­ний долж­ны сто­ять га­лоч­ки на­про­тив пунк­тов «Чте­ние и вы­пол­не­ние», «Спи­сок со­дер­жи­мо­го пап­ки» и «Чте­ние».

Убе­ди­тесь, что со­здан­ная об­щая пап­ка вид­на с дру­го­го ком­пью­те­ра. Для это­го на­жми­те на дру­гом ком­пью­те­ре Пуск → Вы­пол­нить…, и вве­ди­те се­те­вой путь к пап­ке. В мо­ём слу­чае это \\192.168.1.4\​MPI\.

За­пуск MPI-про­грамм

Для за­пус­ка MPI-про­грамм в ком­плект MPICH2 вхо­дит про­грам­ма с гра­фи­че­ским ин­тер­фей­сом Wmpiexec, ко­то­рая пред­став­ля­ет со­бой обо­лоч­ку во­круг со­от­вет­ствую­щей ути­ли­ты ко­манд­ной стро­ки Mpiexec. К со­жа­ле­нию, Wmpiexec глю­чит (уже мно­го лет, сколь­ко су­ще­ству­ет MPICH), по­это­му са­мый нор­маль­ный спо­соб за­пус­кать MPI-про­грам­мы — это поль­зо­вать­ся не­по­сред­ствен­но Mpiexec. Од­на­ко в дан­ной ста­тье я рас­ска­жу о Wmpiexec, так как эта про­грам­ма ин­ту­и­тив­но по­нят­нее.

Ок­но про­грам­мы Wmpiexec по­ка­за­но на ри­сун­ке 13 (об­ра­ти­те вни­ма­ние, что вклю­чён фла­жок «more options»).

Про­грам­ма Wmpiexec

Про­грам­ма Wmpiexec

Ри­су­нок 13. Про­грам­ма Wmpiexec

Эле­мен­ты управ­ле­ния ок­на име­ют сле­дую­щий смысл:

  • По­ле вво­да «Application»: сю­да вво­дит­ся путь к MPI-про­грам­ме. Как уже бы­ло ска­за­но ра­нее, путь пе­ре­да­ёт­ся в не­из­мен­ном ви­де на все ком­пью­те­ры се­ти, по­это­му же­ла­тель­но, что­бы про­грам­ма рас­по­ла­га­лась в об­щей се­те­вой пап­ке.
  • «Number of processes»: чис­ло за­пус­кае­мых про­цес­сов. По умол­ча­нию про­цес­сы рас­пре­де­ля­ют­ся по­ров­ну меж­ду ком­пью­те­ра­ми се­ти, од­на­ко это по­ве­де­ние мож­но из­ме­нить при по­мо­щи кон­фи­гу­ра­ци­он­но­го фай­ла.
  • Кноп­ка «Execute» за­пус­ка­ет про­грам­му; кноп­ка «Break» при­ну­ди­тель­но за­вер­ша­ет все за­пу­щен­ные эк­зем­пля­ры.
  • Фла­жок «run in a separate window» пе­ре­на­прав­ля­ет вы­вод всех эк­зем­пля­ров MPI-про­грам­мы в от­дель­ное кон­соль­ное ок­но.
  • Кноп­ка «Show Command» по­ка­зы­ва­ет в по­ле спра­ва ко­манд­ную стро­ку, ко­то­рая ис­поль­зу­ет­ся для за­пус­ка MPI-про­грам­мы (на­по­ми­наю: Wmpiexec — все­го лишь обо­лоч­ка над Mpiexec). Ко­манд­ная стро­ка со­би­ра­ет­ся из всех на­стро­ек, вве­дён­ных в осталь­ных по­лях ок­на.
  • Да­лее идёт боль­шое тек­сто­вое по­ле, в ко­то­рое по­па­да­ет ввод-вы­вод всех эк­зем­пля­ров MPI-про­грам­мы, ес­ли не уста­нов­лен фла­жок «run in a separate window».
  • Фла­жок «more options» по­ка­зы­ва­ет до­пол­ни­тель­ные па­ра­мет­ры.
  • «working directory»: сю­да мож­но вве­сти ра­бо­чий ка­та­лог про­грам­мы. Опять же, этот путь дол­жен быть ве­рен на всех вы­чис­ли­тель­ных уз­лах. Ес­ли путь не ука­зан, то в ка­че­стве ра­бо­че­го ка­та­ло­га бу­дет ис­поль­зо­вать­ся ме­сто на­хож­де­ния MPI-про­грам­мы.
  • «hosts»: здесь мож­но ука­зать че­рез про­бел спи­сок вы­чис­ли­тель­ных уз­лов, ис­поль­зуе­мых для за­пус­ка MPI-про­грам­мы. Ес­ли это по­ле пу­стое, то ис­поль­зу­ет­ся спи­сок, хра­ня­щий­ся в на­строй­ках ме­не­дже­ра про­цес­сов те­ку­ще­го уз­ла (смот­ри­те раз­дел «На­строй­ка MPICH»).
  • «environment variables»: в этом по­ле мож­но ука­зать зна­че­ния до­пол­ни­тель­ных пе­ре­мен­ных окру­же­ния, уста­нав­ли­вае­мых на всех уз­лах на вре­мя за­пус­ка MPI-про­грам­мы. Син­так­сис сле­дую­щий: имя1=зна­че­ние1, имя2=зна­че­ние2.
  • «drive mappings»: здесь мож­но ука­зать се­те­вой диск, под­клю­чае­мый на каж­дом вы­чис­ли­тель­ном уз­ле на вре­мя ра­бо­ты MPI-про­грам­мы. Син­та­кис: Z:\\winsrv\wdir.
  • «channel»: поз­во­ля­ет вы­брать спо­соб пе­ре­да­чи дан­ных меж­ду эк­зем­пля­ра­ми MPI-про­грам­мы.
  • «extra mpiexec options»: в это по­ле мож­но вве­сти до­пол­ни­тель­ные клю­чи для ко­манд­ной стро­ки Mpiexec.

Вме­сте с MPICH по­став­ля­ет­ся об­ра­зец MPI-про­грам­мы: C:\​Program Files\​MPICH2\​examples\​cpi.exe (ис­ход­ный код так­же име­ет­ся). Это про­стая про­грам­ма, при­бли­жён­но вы­чис­ляю­щая зна­че­ние чис­ла Пи пу­тём чис­лен­но­го вы­чис­ле­ния сле­дую­ще­го ин­тег­ра­ла:

Вна­ча­ле по­про­бу­ем за­пу­стить один, два, и че­ты­ре про­цес­са на од­ном ком­пью­те­ре. Что­бы MPICH не рас­пре­де­лял за­пус­кае­мые про­цес­сы меж­ду имею­щи­ми­ся уз­ла­ми, от­клю­чим ра­бо­ту с се­тью; для это­го су­ще­ству­ет ключ ко­манд­ной стро­ки -localonly. При его до­бав­ле­нии ме­не­джер про­цес­сов не ис­поль­зу­ет­ся. Это очень по­лез­но, ес­ли по ка­ким-ли­бо при­чи­нам MPICH не уда­ёт­ся на­стро­ить. Вве­ди­те этот ключ в по­ле «extra mpiexec options» (ри­су­нок 13).

В по­ле «Application» вве­ди­те путь к про­грам­ме cpi.exe. Так как про­грам­ма за­пус­ка­ет­ся на од­ном ком­пью­те­ре, путь мож­но вво­дить ло­каль­ный.

«Number of processes» вве­ди­те рав­ным 1, и на­жми­те кноп­ку «Execute». Про­грам­ма за­пу­стит­ся и спро­сит чис­ло ин­тер­ва­лов для чис­лен­но­го ин­тег­ри­ро­ва­ния. Вве­ди­те 100000000, и на­жми­те Ctrl+Enter (по не­из­ве­ст­ным мне при­чи­нам кла­ви­ша Enter не ра­бо­та­ет). Про­грам­ма по­счи­та­ет чис­ло Пи, и вы­ве­дет вре­мя, за­тра­чен­ное на вы­чис­ле­ние (в мо­ём слу­чае при­мер­но 1.437 се­кун­ды). Про­ве­ди­те вы­чис­ле­ния со 100 мил­ли­о­на­ми ин­тер­ва­лов ещё не­сколь­ко раз, что­бы опре­де­лить ми­ни­маль­ное вре­мя. По­сле это­го вве­ди­те 0, и на­жми­те Ctrl+Enter. Про­грам­ма за­вер­шит­ся.

К со­жа­ле­нию, на мо­ём ком­пью­те­ре по­сле за­вер­ше­ния MPI-про­грам­мы не уда­ёт­ся за­пу­стить её вновь, не за­кры­вая Wmpiexec. Мо­же­те по­про­бо­вать за­пу­стить про­грам­му ещё раз, на этот раз вы­брав 2 про­цес­са. Ес­ли не по­лу­чит­ся — пе­ре­за­пу­сти­те Wmpiexec.

Я по­лу­чил сле­дую­щие вре­ме­на вы­чис­ле­ний на од­ном ком­пью­те­ре: 1 про­цесс — 1.424 се­кун­ды, 2 про­цес­са — 0.7801 се­кун­ды, 4 про­цес­са — 0.7766 се­кун­ды. Вид­но, что два про­цес­са вы­пол­ни­ли вы­чис­ле­ния по­чти в 2 ра­за быст­рее, чем один про­цесс, в то вре­мя как ис­поль­зо­ва­ние 4-х про­цес­сов не да­ло даль­ней­ше­го вы­иг­ры­ша в ско­ро­сти. Это вы­зва­но тем, что ком­пью­тер, на ко­то­ром я за­пус­кал про­грам­му, име­ет двухъ­ядер­ный про­цес­сор.

Те­перь за­пу­стим MPI-про­грам­му на двух ком­пью­те­рах. Для это­го ско­пи­руй­те про­грам­му cpi.exe на об­щий се­те­вой диск (в мо­ём слу­чае это \\192.168.1.4\​MPI\). Убе­ди­тесь, что про­грам­ма вид­на со всех ком­пью­те­ров по од­но­му и то­му же се­те­вом ад­ре­су.

Те­перь са­мое глав­ное. Так как эк­зем­пля­ры MPI-про­грам­мы ра­бо­та­ют и об­ме­ни­ва­ют­ся дан­ны­ми по се­ти не­за­ви­си­мо от ме­не­дже­ра про­цес­сов, их то­же нуж­но вне­сти в спи­сок ис­клю­че­ний бранд­мау­э­ра Windows. До­бавь­те cpi.exe (пря­мо с се­те­во­го ре­сур­са) в спи­сок ис­клю­че­ний бранд­мау­э­ра на всех ком­пью­те­рах се­ти (ри­су­нок 7). Я про­бо­вал про­сто от­клю­чить бранд­мау­эр на всех ком­пью­те­рах — не по­мог­ло.

Ука­жи­те се­те­вой ад­рес про­грам­мы cpi.exe (в мо­ём слу­чае это \\192.168.1.4\MPI\cpi.exe) в по­ле «Application» про­грам­мы Wmpiexec. Вы­бе­ри­те чис­ло про­цес­сов и на­жми­те кноп­ку Execute.

Я по­лу­чил сле­дую­щие вре­ме­на вы­чис­ле­ний на двух ком­пью­те­рах: 1 про­цесс — 1.424 се­кун­ды, 2 про­цес­са — 1.023 се­кун­ды, 4 про­цес­са — 0.5714 се­кун­ды. На этот раз 4 про­цес­са да­ли вы­иг­рыш в ско­ро­сти по срав­не­нию с дву­мя про­цес­са­ми. Ко­неч­но же, бес­про­вод­ная сеть, на ко­то­рой я те­сти­ро­вал вы­чис­ле­ния, пе­ре­да­ёт дан­ные очень мед­лен­но (10 МБит/сек), и име­ет огром­ные за­держ­ки. Од­на­ко, не­ко­то­рое уско­ре­ние уда­лось по­лу­чить да­же на та­кой се­ти.

Со­зда­ние MPI-про­грам­мы в Visual Studio

Пре­жде все­го, нуж­но на­стро­ить Visual Studio, что­бы он на­хо­дил за­го­ло­воч­ные фай­лы и .lib-биб­лио­те­ки MPICH. Для это­го за­пу­сти­те Visual Studio и на­жми­те Tools → Options, в де­ре­ве сле­ва вы­бе­ри­те Projects and Solutions → VC++ Directories. Спра­ва-ввер­ху вы­бе­ри­те Show directories for: Include files. На­жми­те кно­поч­ку с жёл­той па­поч­кой и до­бавь­те путь к .h-фай­лам:

На­строй­ка пу­ти к за­го­ло­воч­ным фай­лам MPICH

На­строй­ка пу­ти к за­го­ло­воч­ным фай­лам MPICH

Ри­су­нок 14. На­строй­ка пу­ти к за­го­ло­воч­ным фай­лам MPICH

По­сле это­го про­де­лай­те ту же про­це­ду­ру для биб­лио­тек (Show directories for: Library files):

На­строй­ка пу­ти к биб­лио­теч­ным фай­лам MPICH

На­строй­ка пу­ти к биб­лио­теч­ным фай­лам MPICH

Ри­су­нок 15. На­строй­ка пу­ти к биб­лио­теч­ным фай­лам MPICH

Те­перь со­здай­те кон­соль­ный про­ект так, как по­ка­за­но на ри­сун­ках 2–4 в ста­тье об OpenMP. От­крой­те ок­но на­стро­ек про­ек­та (Project → Properties), вы­бе­ри­те Configuration: All Configurations, в де­ре­ве сле­ва вы­бе­ри­те Configuration Properties → Linker → Input. До­бавь­те mpi.lib в по­ле Additional Dependencies спра­ва:

До­бав­ле­ние mpi.lib к про­грам­ме

Ри­су­нок 16. До­бав­ле­ние mpi.lib к про­грам­ме

Ис­ход­ный код про­грам­мы для про­вер­ки мо­же­те взять из фай­ла C:\​Program Files\​MPICH2\​examples\​icpi.c. От­ком­пи­ли­руй­те про­грам­му и за­пу­сти­те с по­мо­щью Wmpiexec — всё долж­но ра­бо­тать.

Уда­ле­ние MPICH

Для то­го, что­бы кор­рект­но и пол­но­стью уда­лить MPICH из си­сте­мы, нуж­но вы­пол­нить 3 дей­ствия:

  1. Уда­ли­те со­хра­нён­ный па­роль из ре­ест­ра, за­пу­стив Wmpiregister, и на­жав кноп­ку «Remove» (ри­су­нок 8).
  2. Оста­но­ви­те ме­не­джер про­цес­сов. Для это­го от­крой­те ок­но управ­ле­ния служ­ба­ми (Пуск → На­строй­ка → Па­нель управ­ле­ния → Ад­ми­ни­стри­ро­ва­ние → Служ­бы), вы­бе­ри­те «MPICH2 Process Manager» (ри­су­нок 6), и на­жми­те кноп­ку с чёр­ным квад­ра­ти­ком ввер­ху ок­на.
  3. За­пу­сти­те ин­стал­ля­тор MPICH от име­ни ад­ми­ни­стра­то­ра (ри­сун­ки 2 и 3), и вы­бе­ри­те оп­цию «Remove».

P.S.

Ес­ли вы не зна­е­те, как со­зда­вать па­ра­л­лель­ные про­грам­мы при по­мо­щи MPI, со­ве­тую про­честь спе­цифи­ка­цию, там всё по­дроб­но опи­са­но: http://​www.​mpi-forum.​org/​docs/​mpi21-report.pdf.

User’s Guides

MPICH Installers’ Guide is a guide to help with the installation process of MPICH. Both Unix and Windows installation procedures are outlines.

MPICH Users’ Guide provides instructions to use MPICH. This manual explains how to run MPI applications after MPICH is installed and working correctly.

MPICH README is a basic README for MPICH beginners. It contains the simplest set of instructions to get started with MPICH.

FAQ provides answers to frequently asked questions.

What’s New in MPICH-4.3.0

MPICH CHANGES lists the changes included in each release of MPICH.

MPICH RELEASE NOTES lists the known problems in each release of MPICH.

Tutorials

Introduction to MPI: Argonne MPI Tutorials (see also the code examples in the link).

Advanced Parallel Programming with MPI-3: Argonne MPI Tutorials (see also the code examples in the link).

Publications

Publications: Publications on MPI.

Developers

MPICH Wiki: MPICH wiki hosts most of our developer documentation.

Developer Documentation: MPICH developer documentation.

Support: You can get more support from this page.

1 minute read

Requirements

  • A copy of the distribution, mpich.tar.gz. Download the latest stable version of mpich from: https://www.mpich.org/downloads/
  • A C compiler. See how to install gcc.
  • A Fortran-77, Fortran-90, and/or C++ compiler if you wish to write MPI programs in any of these languages. See how to install gfortran.

Directions

Linux and macOS

  1. Make sure you are using bash.

    If it is not bash, command: bash

  2. Create a folder for mpich
  3. Unpack mpich-x-y-z.tar.gz to that folder, where x-y-z is the version
     tar xfz mpich-x-y-z.tar.gz
    
  4. Create 2 other folders
     mkdir /home/you/mpich/build
     mkdir /home/you/mpich/mpich-install
    
  5. Enter the build directory and run the configuration script. It is important to write the full path in the prefix argument.
     cd /home/you/mpich/build
     ../mpich-x-y-z/configure --with-device=ch4:ofi -prefix=/home/you/mpich/mpich-install 2>&1 | tee c.txt
    
  6. Build mpich. Run command and go for a coffee:
  7. Install MPICH.
     make install 2>&1 | tee mi.txt	
    
  8. Add the bin subdirectory of the installation directory to your path:
     export PATH=/home/you/mpich/mpich-install/bin:$PATH
    
  9. Check if the installation went well:
     which mpicc
     which mpiexec
    
  10. Test mpi in your machine by using the example file that the building process creates. That simple program computes the value of PI. While still inside the build folder, command:
    mpiexe -n NC ./examples/cpi
    

    where NC is the number of cores of your machine.

Learn more

Windows

You should install Microsoft MPI instead.
See how to install Microsoft MPI.


Source: Internet

Author: User

Mpich2 is the mpich implementation version that corresponds to the MPI-2, including some functions of the MPI-2 relative to the extended MPI-1, such as dynamic task management, parallel I/O and so on. The latest version is MPICH2-1.0.5.

2.3.1 install and configure mpich2 for Microsoft Windows

Install mpich2 for Microsoft Windows with the following requirements:

1. Windows 2003/XP Professional or server (Windows 95/98 is not supported)

2. All Hosts must be able to establish TCP/IP connections

3. mpich supports the following compilers: Ms VC ++ 6.x, ms vc ++. net, Compaq Visual Fortran 6.x, intel Fortran, GCC, and G77. To install mpich, you must log on as an administrator.

This experiment uses the mpich2 for microoft Windows Version 1.0.5p2,

Run the command after downloading and install it. Yes: http://www-unix.mcs.anl.gov/mpi/

Mpich/downloads/mpich2-1.0.5p2-win32-ia32.msi.

Log on to each host as an administrator and create the same account on all hosts (you can also use different user names and accounts for each machine, and then create a configuration file, run the command lineProgram), And then run the downloaded Installation File to install mpich on each host.

Open the progress logging card in the task manager, and there is an smpd.exe process. If yes, the installation is successful. The process runs automatically each time the system is started.

Add the mpich2 path to windows so that you can use mpiexec in any path later:

1. Right-click «my computer» and click Properties.

2. Select the advanced tag.

3. Select environment variables.

4. under system variables, select the PATH variable and click Edit. add «C: \ mpich2 \ bin» to the end of the list. separate it from the previous path with a semicolon.

After mpich2 is installed, you must register and configure each computer for use. The registration must be performed on each computer, and the configuration only needs to be executed on the master computer. The purpose of registration is to register the account and password previously applied on each computer to mpich2 so that mpich2 can access each host in the network environment. Configuration method: Run «mpich \ MPD \ bin \ wmpiregister.exe» wmpiregister run interface 2.1:

Figure 2.1 wmpiregister running interface

The setting of the program is very simple. You only need to enter the user name you are currently using to log on to windows in the account. Note that it must be administrator permission. Enter the password corresponding to this user name in the password. Mpich2 cannot use a user without a password. If the current user does not have a password, create one for it and then run wmpiregister for configuration. After entering the information, click Register. The password encrypted into the registry is displayed, indicating that the registration is successful. Click the register button, the above information will be written to the hard disk, otherwise it will be stored in the memory and will not exist after the restart.

In order for programs to run on many hosts, the host must know the information of the currently available hosts without creating a configuration file. In this case, you need to run the configuration program of mpich2 for configuration.

The configuration program provided by mpich2 is a graphical interface program, which can be started from «start-> Program-> mpich2-> wmpiconfig.exe. The Page 2.2 After startup is shown as follows:

Figure 2.2 run wmpiconfig.exe

Select the current workgroup from the drop-down menu of D omain. click get hosts to view all computers in the Working Group. click scan for version to search for hosts with mpich2 installed. the names and versions of successfully installed hosts are displayed in green. uninstalled items are displayed in gray.

2.3.2 precautions

1. mpich2 for Windows requires at least DOTNET frameworks 1.1, So download and install DOTNET frameworks1.1 or 2.0 first. We recommend that you install visual studio2005, which comes with DOTNET frameworks2.0.

2. Assume that mpich2 is installed in the % mpich2root % directory, which contains include, Lib, bin, examples, and jumpshot. Add lib and include to the corresponding directory of VC. Examples is an example of the program CPI, which contains C, C ++, and fortunSource code. This example can be used for testing during configuration.

3. mpich2 creates a service mpich2 Process Manager, Argonne National Lab, and provides the service image % mpich2root % \ bin \ SMPD. This program is the Process Manager of mpich2.

4. mpich2 also requires an account to run. If you create a local account mpiaccount, make sure that the running accounts of all the machines participating in the cluster are the best.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как поменять раздел диска с gpt на mbr при установке windows 10
  • Free ftp server for windows server
  • Как установить windows 10 через acronis
  • Old windows 10 wallpaper
  • Windows server 2019 восстановление системы из командной строки