Message Passing Interface
Piotr Walczuk
czwartek, 8 styczeń 1998       sala 3150

Przekazywanie komunikatów (message passing) to jeden z najpopularniejszych paradygmatów programowania równoległego.
Istnieją liczne implementacje systemów umożliwiających programowanie tą metodą, zarówno na maszynach wieloprocesorowych z pamięcią dzieloną, jak i na sieci stacji roboczych. Pomimo podobnej funkcjonalności biblioteki te (dostarczane m. in. przez liczących się producentów sprzętu, jak choćby Cray, SGI, Convex czy Intel) istotnie różnią się między sobą, co utrudnia pisanie przenośnego oprogramowania wykorzystującego ich możliwości. Także biblioteki zaprojektowane pod kątem przenośności, takie jak P4, EXPRESS,  Chameleon, PARMACS czy PVM nie zapewniają jednorodności rodzaju i semantyki oferowanych usług na różnych platformach sprzętowych, ponadto nie są wygodne do modularnego programowania.

MPI jest specyfikacją ogólnie przyjętego i coraz popularniejszego standardu biblioteki, który powstał w oparciu o najlepsze cechy istniejących produktów tego typu, przy współudziale ich autorów.

Główne zalety MPI: całkowita przenośność, łatwość użycia, różnorodność trybów przesyłania danych (także w pełni asynchroniczny), rozbudowane operacje komunikacji globalnej (collective communication), wsparcie dla tworzenia równoległych bibliotek (enkapsulacja komunikacji za pomocą kontekstów i grup procesów), mechanizm tzw. topologii procesów zwiększający czytelność algorytmów równoległych i mogący poprawić ich wydajność, wbudowane mechanizmy pomiaru wydajności (profiling), buforowanie definiowane przez użytkownika, działanie w środowiskach wielowątkowych.

Do tej pory powstało wiele dobrych implementacji MPI. Najpopularniejsze z nich, dostępne nieodpłatnie to: MPICH, LAM oraz CHIMP. Wiekszość producentów superkomputerów dostarcza własne implementacje standardu. Powstaje coraz więcej oprogramowania wykorzystującego MPI.

W swoim wystąpieniu postaram się przedstawić podstawowe cechy standardu MPI-1.1 i jego implementacji na przykładzie MPICH oraz krótko omówić niektóre rozszerzenia, które wnosi specyfikacja MPI-2 z lipca '97: komunikację jednostronną, zarządzanie procesami, równoległe wejście i wyjście.


Argonne National Laboratory - standard MPI oraz MPICH:   http://www.mcs.anl.gov/mpi/index.html
LAM (Ohio Supercomputing Center):   http://www.osc.edu/lam.html
Lista materiałów do nauki MPI:   http://www.mcs.anl.gov/Projects/mpi/learning.html


 pwalczuk@mimuw.edu.pl