prev up inhalt next


Store-And-Forward

Im Ring wird, ausgehend vom Master, die Nachricht in zwei Richtungen propagiert.


  Store-and-Forward im Ring.
  Gestrichelte Kanten sind mit dem jeweiligen Zeitschritt beschriftet.

Die Zeit beträgt

Tone - to - all = (ts + th + tw · m) · $\displaystyle\lceil$$\displaystyle{\frac{p}{2}}$$\displaystyle\rceil$

Im 2-dimensionalen Gitter wird zunächst eine Zeile als Ring mit der Nachricht versorgt, danach werden alle Spalten gleichzeitig wie Ringe versorgt.


Store-and Forward im MC 2

Da eine Zeile bzw. Spalte $\sqrt{p}$ Prozessoren aufweist, beträgt die Zeit

Tone - to - all = 2 · (ts + th + tw · m) · $\displaystyle\lceil$$\displaystyle{\frac{\sqrt{p}}{2}}$$\displaystyle\rceil$

Für ein dreidimensionales Gitter ergibt sich

Tone - to - all = 3 · (ts + th + tw · m) · $\displaystyle\lceil$$\displaystyle{\frac{\sqrt[3]{p}}{2}}$$\displaystyle\rceil$

Im Hypercube sendet nacheinander für jede Dimension d - 1,d - 2,...,0 der Prozessor mit d -tem Bit = 0 an den Prozessor mit d -tem Bit = 1 . Dabei sind nur solche Prozessoren aktiv, bis zu denen die Nachricht schon vorgedrungen ist.

procedure ONE_TO_ALL_BC(d, my_id, X) /* Broadcast X from 0 to all */
     mask := 2d - 1;                     /* Set lower d bits of mask to 1 */
     for i := d - 1 downto 0 do                     /* Outer loop */
         mask := mask XOR 2i;                /* Set bit i of mask 0 */
         if (my_id AND mask) = 0 then
         /* if the lower i bits of my_id are 0 */
             if (my_id AND 2i) = 0 then
                 msg_destination := my_id XOR 2i;
                 send X to msg_destination;
             else
                 msg_source := my_id XOR 2i;
                 receive X from msg_source;
         end
     end
end

Die Gesamtdauer beträgt

Tone - to - all = (ts + th + tw · m) · log p


One-to-All im Hypercube, zeitlicher Verlauf gestrichelt

In abgewandelter Form kann die Prozedur ONE_TO_ALL_BC auch zum Einsammeln von Nachrichten verwendet werden. Es sendet nacheinander für Dimension d - 1,d - 2,...,0 der Prozessor mit d -tem Bit = 0 an den Prozessor mit d -tem Bit = 1 , wo anschließend die Verknüpfung stattfindet. Dabei werden solche Prozessoren passiv, die ihren Beitrag bereits abgeschickt haben.


prev up inhalt next