Jakie są różnice między MPI a OpenMP? [zamknięte]

Chciałbym wiedzieć (w kilku słowach) jakie są główne różnice między OpenMP i MPI.

Author: nbro, 2015-09-08

2 answers

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

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

MPI jest sposobem programowania na urządzeniach pamięci rozproszonej. Oznacza to, że równoległość występuje, gdy każdy równoległy proces działa we własnej pamięci przestrzeń w izolacji od innych.

Możesz o tym myśleć tak: każdy bit kodu, który napisałeś, jest wykonywany niezależnie przez każdy proces. Paralelizm występuje, ponieważ każdy proces dokładnie określa, nad którą częścią globalnego problemu powinien pracować, opierając się wyłącznie na identyfikatorze procesu.

Sposób, w jaki piszesz program OpenMP i MPI, jest oczywiście bardzo różny.

 46
Author: NoseKnowsAll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 23:26:54

MPI oznacza Message Passing Interface. Jest to zestaw deklaracji API dotyczących przekazywania wiadomości (takich jak send, receive, broadcast, itp.), oraz jakiego zachowania należy się spodziewać po implementacjach.

Idea "przekazywania wiadomości" jest raczej abstrakcyjna. Może to oznaczać przekazywanie wiadomości między lokalnymi procesami lub procesami rozproszonymi po hostach sieciowych itp. Współczesne implementacje bardzo mocno starają się być wszechstronne i abstrakcyjne od wielu podstawowych mechanizmów (dostęp do pamięci współdzielonej, IO sieci itp.).

OpenMP jest API, które ma na celu ułatwienie (prawdopodobnie) pisania programów do przetwarzania wielu pamięci współdzielonych. Nie ma pojęcia o przekazywaniu wiadomości. Zamiast tego, używając zestawu standardowych funkcji i dyrektyw kompilatora, piszesz programy, które wykonują lokalne wątki równolegle i kontrolujesz ich zachowanie (do jakiego zasobu mają dostęp, jak są synchronizowane itp.). OpenMP wymaga wsparcie kompilatora, dzięki czemu można go również traktować jako rozszerzenie obsługiwanych języków.

I nierzadko zdarza się, że aplikacja może używać zarówno MPI jak i OpenMP.

 11
Author: Cong Ma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 23:25:20