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