2015-09-08 19 views

Odpowiedz

32

OpenMP to sposób programowania na urządzeniach z pamięcią wspólną. Oznacza to, że równoległość występuje, gdy każdy równoległy wątek ma dostęp do wszystkich twoich danych.

Można myśleć o tym jako: równoległość może się zdarzyć podczas wykonywania określonej pętli for, dzieląc pętlę między różne wątki.

MPI to sposób programowania na rozproszonych urządzeniach pamięci. Oznacza to, że równoległość występuje tam, gdzie każdy równoległy proces działa we własnej przestrzeni pamięci w oderwaniu od innych.

Możesz myśleć o tym tak: każdy napisany kod jest wykonywany niezależnie przez każdy proces. Równoległość występuje, ponieważ każdy proces dokładnie określa, w której części globalnego problemu powinny pracować, w oparciu o swój identyfikator procesu.

Oczywiście sposób, w jaki pisze się program OpenMP i MPI, jest zupełnie inny.

+0

Możesz to, co opisujesz, bardzo łatwo w programowaniu pamięci współdzielonej lub rozproszonej. To, czego szukasz, nazywa się "redukcją" – NoseKnowsAll

8

MPI to skrót od Message Passing Interface. Jest to zbiór deklaracji API dotyczących przekazywania komunikatów (takich jak send, receive, broadcast, itp.) I jakie zachowanie należy oczekiwać od implementacji.

Idea "przekazywania wiadomości" jest dość abstrakcyjna. Może to oznaczać przekazywanie wiadomości między lokalnymi procesami lub procesami rozproszonymi w hostach sieciowych, itp. Nowoczesne implementacje bardzo starają się być wszechstronnymi i abstrakcyjnymi wielowymiarowymi mechanizmami (dostęp do pamięci współużytkowanej, sieć IO itp.).

OpenMP to API, które polega przede wszystkim na ułatwieniu tworzenia programów do wielokrotnego przetwarzania pamięci wspólnej (przypuszczalnie). Nie ma pojęcia o przekazywaniu wiadomości. Zamiast tego, przy użyciu zestawu standardowych funkcji i dyrektyw kompilujących, piszesz programy, które wykonują lokalne wątki równolegle, i kontrolujesz zachowanie tych wątków (do jakiego zasobu mają mieć dostęp, jak są zsynchronizowane, itp.). OpenMP wymaga obsługi kompilatora, więc możesz również spojrzeć na to jako rozszerzenie obsługiwanych języków.

I nie jest niczym niezwykłym, że aplikacja może używać zarówno MPI, jak i OpenMP.

Powiązane problemy