2016-07-27 3 views
0

Ich habe eine 3D kartesische Topologie von nx von ny durch nz Prozesse. Es gibt mathematische Berechnungen, die gleichzeitig nur "Stifte" von Prozessoren beinhalten. Im Falle eines 3 durch 3 durch 3 Matrix von Prozessen rangierte von 0 bis 26, Prozess 4 ist in drei Operationen beteiligt: ​​Collective Kommunikation entlang Richtungen in MPI kartesischer Topologie

  1. mit Prozessen 13 und 22 entlang der ersten Richtung
  2. mit Prozessen 1 und 7 entlang der zweiten Richtung
  3. mit Prozessen 35 und entlang der dritten Richtung

Diese mathematischen Operationen erfordern sowohl Point-to-Point als auch kollektive Kommunikation zwischen Prozessen, die zum selben Stift gehören.

Für was Punkt zu Punkt Kommunikation betrifft, habe ich MPI_CART_SHIFT verwendet, um jeden Prozess die Ränge der benachbarten Prozesse kennen zu lassen. (Dann werde ich MPI_SENDRECV verwenden.)

Für was kollektive Kommunikation betrifft, wie man solche Kommunikationen durchführt? Ich denke, eine Lösung könnte sein, "Stift" Kommunikatoren zu definieren, die in der Anzahl von nx*ny + nx*nz + ny*nz (diese Anzahl von Kommunikatoren erforderlich ist asymptotisch klein in Bezug auf die Anzahl der Prozesse, wie die Anzahl der Prozesse pro Richtung wächst).

Wäre das der einzige Weg? Gibt es keine Standardunterroutine, die sich auf den kartesischen Kommunikator stützt, um eine solche kollektive Kommunikation durchzuführen?

Antwort

5

Die Nachbarschaftskollektive sind wirklich die einzigen Routinen, die die Verbindungsinformationen für kartesische Topologien direkt ausnutzen können. Sie würden jedoch alle Richtungen (x, y, z) auf die gleiche Weise behandeln, so dass Sie mit Ihrem Bleistiftschema nicht helfen würden.

Ich denke, der einzige Weg, dies zu tun ist, wie Sie vorschlagen, d. H. Einen kompletten Satz von Stift Kommunikatoren zu konstruieren. Beachten Sie, dass MPI Ihnen eine einfache Möglichkeit bietet, dies zu tun, indem Sie MPI_Cart_sub auf dem kartesischen Communicator aufrufen. Sobald Sie die Stiftkommunikatoren konstruiert haben, haben Sie auch die Möglichkeit, Nachbarschaftskollektive auf den Bleistiften anstatt Punkt-zu-Punkt zu verwenden, aber für einen 1D-Kommunikator ist es nicht klar, dass dies viele Vorteile für Nachbarn von Hand hat mach jetzt.