Jaka jest różnica między OpenMP a Open MPI?


Najlepsza odpowiedź

OpenMP to platforma programistyczna co pozwala na zrównoleglenie kodu w jednorodnym systemie pamięci współdzielonej (np. procesor wielordzeniowy). Na przykład można zrównoleglać zestaw operacji na wielordzeniowym procesorze, w którym rdzenie współużytkują pamięć między sobą. Ta pamięć obejmuje pamięć podręczną, pamięć RAM, pamięć dysku twardego itp., A komunikacja jest łatwa i stosunkowo tania.

Open MPI (na podstawie on Message Passing Interface ) jest również platformą programistyczną, ale zamiast tego zapewnia możliwość zrównoleglenia kodu na (nie) jednorodnym system rozproszony (np. superkomputer). Na przykład możliwe jest zrównoleglenie całego programu w sieci komputerów lub węzłów, które komunikują się w tej samej sieci. Ponieważ te węzły są w zasadzie komputerami , mają swój własny układ pamięci i własny zestaw rdzeni (patrz opis OpenMP). Komunikacja między węzłami, w porównaniu z systemami pamięci współdzielonej, może być trudna i zwykle kosztowna.

Odpowiedź

OpenMP to rozszerzenie języka służące do wyrażania operacji równoległych do danych (zwykle tablice zrównoleglone w pętlach). MPI to biblioteka do przekazywania komunikatów między procesami bez współużytkowania.

OpenMP to wyższy poziom abstrakcji, ponieważ jej celem jest ujawnienie współbieżności programu i przepływu danych kompilatorowi. Z kolei współbieżność MPI jest niejawna (wszystkie procesy są równoległe), a komunikaty określają strukturę przepływu danych obliczeń.

Chociaż „Powszechne jest myślenie, że OpenMP jest tylko pamięcią współdzieloną, nic nie stoi na przeszkodzie, aby implementacja OpenMP wykorzystywała MPI do działania na wielu procesach i hostach. OTOH, dwoistość pamięci współdzielonej i przekazywania komunikatów oznacza, że ​​implementacje MPI często wykorzystują pamięć współdzieloną dla rang w tym samym węźle …

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *