Uživatel:Lindntom

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

Lindner Tomas


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


Obsah

Osnova

1. MPI
1.1. Myšlenka MPI
1.2. Historie MPI
1.3. LAM/MPI vs. OpenMPI
1.4. Ukázka příkazů protokolu MPI.
2. PelicanHPC
2.1. Představení PelicanHPC
2.1. Instalace a zásady práce s clusterem.
2.2. Ukázka práce s programy v C a Octave. 
3. Závěr.


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

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


Způsob komunikace

Broadcast - jeden s N (Například vyžádání výsledků ode všech procesů)

Multicast algoritmus - jeden vyžádává jednotlivě od všech procesů
Binární strom - Každý proces má svého určeného "nadřízeného", který výsledky shromažďuje a posílá hlavnímu procesu. 
Tento typ je synchronější a rychlejší.

All-to-All komunikace - každý proces může komunikovat s jakýmkoliv.

Lineární algoritmus - Zasílá zprávy všem přímo. Vhodný pro dlouhé zprávy protože se nemusí přeposílat.
Hypercube algoritmus - Algoritmus má omezený počet adres, kam posílat a zpráva se routuje. Vhodné pro krátké zprávy.

PELICANHPC

Představení PelicanHPC

PelicanHPC je specializovanou Linuxovou liveCD a liveUSB distribucí založenou na Debianu. 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++, 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í obra

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