Uživatel:Lindntom
(→MPI - MESSAGE PASSING INTERFACE) |
(→MPI - MESSAGE PASSING INTERFACE) |
||
Řádka 60: | Řádka 60: | ||
'''Na co nezapomenout''' | '''Na co nezapomenout''' | ||
− | #include <mpi.h> //Zacleneni knihovny | + | #include <mpi.h> // Zacleneni knihovny |
MPI_Init(&argc, &argv); // inicializace knihovny | MPI_Init(&argc, &argv); // inicializace knihovny | ||
MPI_Finalize(); // ukončení práce s MPI | MPI_Finalize(); // ukončení práce s MPI |
Verze z 25. 11. 2011, 16:47
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://www.mcs.anl.gov/research/projects/mpi/
http://www.mcs.anl.gov/research/projects/mpi/tutorial/snir/mpi/mpic.htm