Was ist der Unterschied zwischen OpenMP und Open MPI?


Beste Antwort

OpenMP ist eine Programmierplattform Dadurch kann Code über ein homogenes Shared Memory-System (z. B. einen Multi-Core-Prozessor) parallelisiert werden. Zum Beispiel könnte man eine Reihe von Operationen über einen Mehrkernprozessor parallelisieren, bei dem sich die Kerne den Speicher untereinander teilen. Dieser Speicher umfasst Cache-Speicher, RAM, Festplattenspeicher usw., und die Kommunikation ist einfach und relativ kostengünstig.

Öffnen Sie MPI (basierend) on Message Passing Interface ) ist ebenfalls eine Programmierplattform, bietet jedoch die Möglichkeit, Code über eine (nicht) homogene verteiltes System (z. B. ein Supercomputer). Zum Beispiel ist es möglich, ein gesamtes Programm über ein Netzwerk von Computern oder Knoten, die über dasselbe Netzwerk kommunizieren, zu parallelisieren. Da diese Knoten im Wesentlichen Computer sind Sie haben ein eigenes Speicherlayout und einen eigenen Satz von Kernen (siehe OpenMP-Beschreibung). Die Kommunikation zwischen Knoten kann im Vergleich zu gemeinsam genutzten Speichersystemen schwierig und normalerweise teuer sein.

Antwort

OpenMP ist eine Spracherweiterung zum Ausdrücken datenparalleler Operationen (üblicherweise über Schleifen parallelisierte Arrays). MPI ist eine Bibliothek zum Weiterleiten von Nachrichten zwischen Prozessen, die nichts gemeinsam nutzen.

OpenMP ist eine übergeordnete Ebene der Abstraktion, da sein Zweck darin besteht, die Parallelität und den Datenfluss des Programms dem Compiler zugänglich zu machen. Im Gegensatz dazu ist die MPI-Parallelität implizit (alle Prozesse sind parallel), und die -Nachrichten legen die Datenflussstruktur der Berechnung fest.

Obwohl dies der Fall ist „OpenMP wird häufig nur als gemeinsamer Speicher betrachtet. Nichts hindert eine OpenMP-Implementierung daran, MPI für den Prozess- und Host-übergreifenden Betrieb zu verwenden. OTOH, die Dualität von gemeinsam genutztem Speicher und Nachrichtenübermittlung bedeutet, dass MPI-Implementierungen häufig gemeinsam genutzten Speicher für Ränge auf demselben Knoten nutzen …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.