Хелпикс

Главная

Контакты

Случайная статья





Прин­ци­пы ра­бо­ты 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 на ком­пью­те­ры се­ти.

Ри­су­нок 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-про­грам­му на од­ном ком­пью­те­ре.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.