Frage

Ich habe die Definitionen dieser Begriffe gelesen und meine Interpretation ist, dass es eine eins -zu -Eins -Beziehung zwischen einer Gruppe und einem Kommunikator gibt. Eine Gruppe ist eine Reihe von Prozessen, die miteinander kommunizieren möchten, und ein Kommunikator ist eine Implementierung für eine Gruppe.

Ist das richtig? Warum zwei verschiedene Begriffe haben, wenn dies so ist?

War es hilfreich?

Lösung

EIN Gruppe ist ein bestellte Reihe von Prozessidentifikatoren (MPI 2.2 Spec, Sec 6.2.1). Die Bestellung wird durch Zusammenarbeit mit jedem Prozesskennung ein einzigartiges Verhältnis gegeben Rang von 0 bis Group.Size - 1.

EIN Kommunikator Kapuliert alle Kommunikation zwischen einer Reihe von Prozessen. Ein Intra-Kommunikator ist sowohl mit einer Gruppe als auch mit einer Gruppe verbunden Kommunikationskontexte sowohl für Punkt-zu-Punkt- als auch für kollektive Kommunikation und möglicherweise andere Kontextinformationen wie virtuelle Topologien (Spec, 6.1.2). Ein Zwischenkommunikator ist mit zwei nicht überlappenden Gruppen verbunden.

Ich denke (wahrscheinlich sehr locker) an die Gruppe eines Kommunikators als Symboltabelle.

Eine Gruppe kann Prozesskennungen von mehreren Kommunikatoren enthalten.

Schließlich sind die Konstruktion und den Betrieb von Gruppen lokal im Prozess und beinhalten keine Interprozesskommunikation. Dies gilt im Allgemeinen nicht für Kommunikatoren (von Natur aus).

Andere Tipps

Es gibt viele Unterschiede zwischen Kommunikatoren und Gruppen, wie ich nach dem Lesen der MPI -Spezifikation herausgefunden habe.

Bearbeiten: Gruppen sind Objekte, die Gruppen von Prozessen darstellen.

Kommunikator ist eine Reihe von Prozessen, die miteinander kommunizieren können und aus Prozessen einer einzelnen Gruppe oder aus mehreren Gruppen bestehen können.

Somit sind sie völlig unterschiedliche Einheiten. Sie sollten nicht miteinander verwechselt werden.

Ein Kommunikator enthält Gruppen (en), während eine Gruppe nur eine Sammlung von Prozessen ist.

Wenn ein Kommunikator nur eine Gruppe enthält, wird er als Intracommunicator bezeichnet (der Kommunikator, mpi_comm_world ist eine, die sich auf eine Gruppe bezieht, die alle Ränge enthält).

Wenn es zwei Gruppen enthält, wird es im Intercommunicator aufgerufen (für Sie werden standardmäßig keine erstellt).

Sich ansehen https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf wo er eine sehr gute bildliche Erklärung dafür gibt, wie ein Kommunikator ein Behälter für ein oder zwei Gruppen ist.

Eine Gruppe in MPI entspricht dem mathematischen Konzept "Set", das in MPI eingeführt wird, um die Organisationsprozesse und die Erstellung neuer Kommunikation zu erleichtern. Sie können beispielsweise die Gewerkschafts- und Kreuzungsoperationen an Sets verwenden, um neue Sets zu erstellen, damit Sie sie verwenden können, um neue Kommunikatoren zu erstellen.

Eine Gruppe hat nichts mit Kommunikation zu tun, obwohl eine Gruppe verwendet werden kann, um einen Kommunikator zu erstellen (ein Kommunikator ist eine Gruppe plus ein Kontext).

Eine Gruppe kann auch als ID für die Verteilung von Aufgaben/Daten zwischen verschiedenen Prozessen verwendet werden. Zum Beispiel können wir testen, ob sich ein Prozess in einer Gruppe befindet, um festzustellen, ob er etwas bewirken sollte.

EIN Kommunikator ist ein Objekt, das eine Gruppe von Prozessen beschreibt. In vielen Anwendungen arbeiten alle Prozesse eng zusammengekoppelt, und der einzige Kommunikator, den Sie benötigen, ist mpi_comm_world.

Gruppe Beschreibung aller Prozesse, mit denen Ihr Job beginnt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top