9_342C3_ScoicaAdrian

Download Report

Transcript 9_342C3_ScoicaAdrian

Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Evaluări de performanță în
implementările MPI
Scoică Adrian
342C3
[email protected]
03.01.12
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
1
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Introducere şi terminologie
MPI este un acronim care vine de la message passing interface:
• Sistem de transmisie de mesaje standard și portabil.
• Proiectat pentru a funcționa peste arhitecturi paralele (sisteme
eterogene).
• Definește semantica unei biblioteci (nu este o bibliotecă), adică un
protocol de comunicație.
Versiuni și bindinguri:
• Fortran 77 și C sunt limbajele suportate în mod clasic.
• MPI1 este prima verisune a standardului (Iunie 1994).
• MPI2 a adus îmbunătățiri la (Iulie 1997), cum ar fi One Sided
Communication (Remote Memory Access), Managementul Dinamic al
Proceselor sau I/O.
• Momentan, bindinguri peste mai multe limbaje (C#, Java, Python)
03.01.12
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
2
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
1. Implementări
Fiind vorba de un standard liber, s-au realizat mai multe
implementări:
• MPICH – cea mai cunoscută implementare (este free software, și
este disponibil atât pentru Linux/Unix cât și pentru Windows)
• LAM implementation – precursorul OpenMPI (LAM vine de la Local
Area Multicomputer)
• Cray implementation – scris pentru a rula doar în interiorul unui
sistem Cray X1, fără suport pentru clustering
• HP implementation – folosit pentru întreaga gamă de arhitecturi
oferite de HP
• GridMPI – optimizat pentru grid computing (introduce PSPacer)
• MicrosoftMPI – inspirat din MPICH2, dar se integrează cu Windows
Compute Cluster Server 2003 în domenii legate de securitate.
03.01.12
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
3
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
2. Evaluarea performanțelor
Atunci când facem evaluarea performanțelor pentru o implementare de
MPI, trebuie să avem în vedere câteva probleme:
• număr suficient de mare de procesoare
• pattern-uri de comunicare diferite (normal, bufferat, sincron,...)
• acces exclusiv la resurse (de exemplu, bandwidth)
• testarea cu apeluri nonblocante
• testarea cu aplicații mixte (amestec între data-intensive și IOintensive)
• infrastructura peste care se comunică (eg. InfiniBand, Myrinet)
Ce măsurăm: latență și bandwidth
• LBW (latency badwidth test la transmiterea de mesaje point-to-point)
• ATA (all to all message interchange test)
• STS (some to some message interchange test)
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
3. Rezultate pe clustere de PC-uri
Au fost evaluate următoarele modele de comunicare (pe MPICH,
Chimp, Unify și LAM):
•
•
•
Ping (one-way)
PingPong (bidirecțional)
Colectivă (broadcast, sincronizarea de bariere)
Comportament diferit MPICH – LAM în ceea ce privește latența:
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
3. Rezultate pe clustere de PC-uri
Concluzii:
• Implementarea de algoritmi diferiți funcție de tipul mesajului (MPICH)
• MPICH are cea mai rapidă implementare pentru sincronizări de
bariere (util la comunicații)
• Comunicarea colectivă implementată în software care depinde de
comunicarea point-to-point produce rezultate slabe.
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
4. Rezultate după tipul rețelelor
Au fost evaluate metode de comunicare peste:
• InfiniBand (generic, folosit în High Performance Computing)
• Myrinet (proiectat special pentru clustere, overhead de protocol mic)
• Quadrics (proiectat pentru arhitecturi massively paralel)
Se observă diferențe de latență atât la comunicarea One-Way cât și Bidirecțional:
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
4. Rezultate după tipul rețelelor
Concluzii:
• Implementările de MPI peste InfiniBand au performanță de
latență ridicată și lățime de bandă foarte bună
• MPI over Quadrics oferă potențial de overlap foarte bun între
Algoritmi
paraleli şi distribuiţi
– Prezentări
Laborator
codul de IO și cel de
calcul,
în timp
ce MPI
over InfiniBand sau
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
5. Eficiența paralelizării folosind theraduri
A fost evaluată eficiența folosirii MPI_THREAD_MULTIPLE
pentru următoarele implementări ale MPI:




MPICH2
OpenMPI
IBM MPI
SunMPI
Se poate folosi multithreading în MPI acolo unde este
asigurat thread safety-ul logicii implementate, dar de
obicei există costuri. MPI prevede patru nivele de threadsafety:



MPI_THREAD_SINGLE (un singur thread per proces)
MPI_THREAD_FUNNELED (un singur thread folosește MPI)
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
MPI_THREAD_SERIALIZED
(un singur thread folosește MPI la
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
5. Eficiența paralelizării folosind threaduri
Printre factorii care influențează forma graficelor pentru overheadul
implementării cu threaduri, cel mai important este costul locking-ului și
numărul de threaduri/procesor din sistem.
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
5. Eficiența paralelizării folosind threaduri
Implementările de la Sun și IBM au latență de 10 ori mai mare atunci când
vorbim de implementarea cu threaduri versus o implementare cu procese față
de MPICH.
Concluzie: OpenMPI si MPICH oferă performanțe mult mai bune pe clustere
Linux decăt implementările oferite de Sun și de IBM.
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Bibliogafie
[0] MPI @ LLNL:
https://computing.llnl.gov/mpi/mpi_benchmarks.html
[1] Performance Evaluation of Some MPI Implementations on MPI Clusters,
Natawut Nupairoj & Lionel M. Ni.:
www.mcs.anl.gov/~thakur/papers/thread-tests.pdf
[2] Test Suite for Evaluating Performance of MPI Implementations,
Rajeev Thakur & William Gropp:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40.9089&rep=rep1&ty
pe=ps
[3] Wikipedia:
http://en.wikipedia.org
[4] Performance Comparison of MPI Implementations over InfiniBand,
Myrinet and Quadrics, Jiuxing Liu, Jiesheng Wu, et. al.
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Va mulţumesc!
Întrebări?
03.01.12
Algoritmi paraleli şi distribuiţi – Prezentări Laborator
13