Uživatel:Lindntom

Z HPM wiki
Přejít na: navigace, hledání

Lindner Tomas


Název semestrální práce: PelicanHPC a MPI


MPI - MESSAGE PASSING INTERFACE

Historie MPI

Na vývoji první verze protokolu MPI-1 se pracovalo v první polovině devadesátých let, přesněji 1992-1994 a první článek bzl publikován v roce 1994 v časopise SuperComputers. Na vývoji se podílelo otevřené společenství univerzit (University of Edinburg, Miss State University, Michigan Univerzity) a soukormých firem (Intel, IBM, Sun ad.) výsledkem byl funkční opensource protokol, který byl v letech 1995-1997 zdokonalen o další funkce a vznikl standard MPI-2 pod záštitou projektu OpenMPI.


Myšlenka a definice MPI

Jak název napovídá, MPI neboli Message Passing Protocol slouží k zasílání krátkých zpráv mezi procesy, což se ukázalo jako jedna z nejvyužitelnějších metod pro paralelní výpočty. Oproti například Streamu nebo jiným způsobům komunikace vyniká jak svou jednoduchostí (velká řada procesů využívá 6 funkcí protokolu) tak nenáročností na zatížení sítě.


MPICH, LAM/MPI, OpenMPI

V dnešní době existuje několik projektů, které se zabývají vývojem MPI.

Prvním z nich je MPICH, jehož nejnovější verze MPICH2 je také součástí Debianu.

Druhým projektem je LAM/MPI , která ještě využívá protokol MPI-1. Samotní vývojáři však další vývoj pozastavili a doporučují přejít na nový slibný projekt OpenMPI , který využívá protokolu MPI-2 a doplňuje ho o různé prvky z jiných obdobných protokolů jako například protokol PVM.

Ukázka příkazů protokolu MPI

Send(dest,tag,address,length) //Posila zpravu jinemu procesu
Recv(src,tag,address,length) //Prijima zpravu od jineho procesu
Broadcast(tag,address,length) //Posila zpravu vsem v dosahu

dest a src - integer identifikace druhého procesu.

tag - integer určující prioritu zprávy.

address - integer odkazující na místo v paměti.

length - velikost prostoru na jehož první člen odkazuje adress


V praxi se spíš používá rozšíření MPI_Send apod, které podporuje heterogenní clustery a zlepšují dohled nad prioritou procesů, domén apod.


Na co nezapomenout

#include <mpi.h>         // Zacleneni knihovny
MPI_Init(&argc, &argv);  // inicializace knihovny
MPI_Finalize();          // ukončení práce s MPI

PELICANHPC

                         Pelicanlogo.png


Představení PelicanHPC

PelicanHPC je specializovanou Linuxovou liveCD a liveUSB distribucí založenou na Debianu. Byla Vyvinuta profesorem Michaelem Creelem z Universidad Autonóma de Barcelona a jedná se o pokračováníprojektu Parallel Knoppix. Tato distribuce je speciálně určena na využití v clusterech a používá protokolu MPI. V dřívějších verzích využívala projekt LAM/MPI. Jelikož však tento projekt ukončil vývoj, funguje nyní na projektu OpenMPI. Distribuce umožňuje programování v C, C++,Pythonu ale také v Octave, což je opensource obdoba MATLABu.


Instalace a zásady práce s clusterem

Důležité!! : PelicanHPC spouštějte pouze na uzavřené síti. Hlavní počítač, který řídí běh všech ostatních uzlů se chová jako DHCP server, tudíž hrozí nebezpečí, že náhodně připojený jiný počítač získá IP adresu vašeho clusteru a nebude se moci připojit k síti. Síť zapojujeme skrz switch, router nebo, v krajním případě pro potřebu demonstrace, přímo křížovým kabelem.


INSTALACE - Postup

Při případě se musíme ujistit, že hlavní node bude bootován z CD popř. z disku USB. Ostatní nody by měly být ,pro zjednodušení, bootovány ze sítě.


Vložíme CD do mechaniky a začneme CD bootovat. Po zobrazení úvodní obrazovky zvolíme možnost LIVE. Při načítání se OS bude snažit nalézt DHCP server. Vzhledem k tomu, že později sám bode působit jako DHCP, tuto část můžeme přeskočit stisknutím Ctrl+C.


Následuje obrazovka Pelican_setup. nastavení neměňte a nechte nastavené ram1. Toto okno je určeno proskušenější uživatele.


Dále se OS zeptá, zda chcete data a examply uložit do složky /home/user . Potvrdťe. Složka /home/user se stejně nachází na RAM počítače.


OS vás nyní vyzve k přepsání hesla. Toto heslo si zapamatujte.


Nastavení Clusteru

Gratuluju, PelicanHPC je nyní v provozu. Nyní se přihlašte. login: user, password:<vase_heslo>. Pokud potřebujete, je možno pracovat v grafickém prostředí příkazem startx, který spustí Xserver. Není to však nutné. Cluster se stejně nastavuje skrz shell (příkazovou řádku). nyní zadejte příkaz pelican_setup. Skript se vás dotáže, na jakém rozhraní budete cluster provozovat. to je Výhodné v případě, že chcete hlavní node připojit k internetu. Nenarušíte tím vnější síť a zároveň bude cluster schopen čerpat z vnější sítě data.

Potvrďte další okno. Nyní vás Pelican vyzve, abyste zapnuli ostatní nody v clusteru. Ty by měly být nastaveny tak, aby bootovaly ze sítě. Hlavní node bude testovat zapojené nody a bude určovat, kolik jich je již připojeno. Pokud nejsou načteny všechny nody, nepotvrzujte další obrazovku. stisknutím No se provede refresh seznamu.


Až budou všechny nody připojeny, stiskněte Yes a hlavní node aktivuje cluster. Včetně příkazové řádky vám oznámí výkon clusteru, počet jader a výkon jednotlivých nodů.

Funkci clusteru si můžete vyzkoušet zadáním mpirun -hostfile ~/tmp/bhosts ./flops která zatíží všechny nody a znovu přepočítá jejich rychlost.

Ukládání vytvořených dat

PelicanHPC je vytvářen na RAM počítače, a proto, po ukončení jeho práce jsou všechna data ztracena. Abychom tomu předešli je třeba výsledná data zálohovat. Pevný disk na frontendu (řídící node clusteru) se sám nepřipojuje a proto je ho třeba namountovat, popř. připojit a namountovat USB flash paměť. Mountování disku se provádí příkazem mount -t auto <název diskového oddílu> <místo přimountování> pro zjištění názvu oddílu (např sda2 či sdb1) se hodí velmi dobře aplikace gparted. Pokud máte připojené druhé ethernetové rozhraní, je možné data i posílat přes ethernet na vzdálené místo.

Ukázka práce s C a Octave


Zdroje

http://pelicanhpc.org/

http://www.mcs.anl.gov/research/projects/mpi/

http://www.open-mpi.org/

http://www.mcs.anl.gov/research/projects/mpi/tutorial/snir/mpi/mpic.htm

http://distrowatch.com/

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje