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

Instalace a zásady práce s clusterem

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