Hypercube (communication pattern): Difference between revisions

Content deleted Content added
Danielmyr (talk | contribs)
Translate ESBT-Broadcast
Line 92:
 
== ESBT-Broadcast ==
DerThe ESBT-Broadcastbroadcast (Edge-disjoint Spanning Binomial Tree) Algorithmusalgorithm<ref>{{cite journal|last1=Johnsson|first1=S.L.|last2=Ho|first2=C.-T.|title=Optimum broadcasting and personalized communication in hypercubes|journal=IEEE Transactions on Computers|volume=38|issue=9|year=1989|pages=1249–1268|issn=00189340|doi=10.1109/12.29465}}</ref> istis eina zeitoptimalerpipelined Broadcastbroadcast füralgorithm Rechnerbündelwith mitoptimal Hyperwürfel-Netztopologie.runtime Dazufor wirdclusters daswith Netzhypercube ausgehendnetwork vontopology. derThe Quelle (imalgorithm Folgendem derembeds <math>0d</math> edge-Rechner)disjoint binomial trees in the hypercube, such that each neighbor of processing element <math>d0</math> kantendisjunkteis Binomialbäumethe aufgeteilt,root soof dassa jederspanning Nachbarbinomial dertree Quelle die Wurzel eines Binomialbaums miton <math>2^d - 1</math> Rechnern istnodes. DieTo Quellebroadcast zerteilta ihremessage, Nachrichtthe nunsource innode splits its message into <math>k</math> Teilnachrichten,chunks dieof dannequal zyklischsize anand diecyclically Wurzelnsends derthem Binomialbäumeto verteiltthe werden.roots Jederof Binomialbaumthe führtbinomial anschließendtrees. einenUpon Broadcastreceiving aus.a chunk, the binomial trees broadcast it.
 
VerteiltThe dieruntime Quelleof inthis jedemalgorithm Schrittis eineas Teilnachrichtfollows. In each step, hatthe source node sends one sieof nachits <math>k</math> Schrittenchunks alleto Teilnachrichtena verteiltbinomial tree. DerBroadcasting Broadcastthe inchunk einemwithin Binomialbaumthe benötigtbinomial tree takes <math>d</math> Schrittesteps. InsgesamtThus, werdenit somittakes <math>k</math> +steps to distribute all chunks and additionally <math>d</math> Schrittesteps benötigtuntil the last binomial tree broadcast has finished, bisresulting derin Broadcast<math>k für+ died</math> letztesteps Nachrichtoverall. abgeschlossenTherefore, istthe undruntime diefor Laufzeita ergibtmessage sichof length <math>n</math> zuis <math>T(n, p, k) = \left(\frac{n}{k} T_\text{byte} + T_\text{start} \right) (k + d)</math>. DasWith optimalethe optimal chunk size <math>k^* = \sqrt{\frac{nd \cdot T_\text{byte}}{T_\text{start}}}</math>, the optimal runtime minimiertof diethe Laufzeitalgorithm zuis <math>T^*(n, p) = n \cdot T_\text{byte} + \log(p) \cdot T_\text{start} + \sqrt{n \log(p) \cdot T_\text{start} \cdot T_\text{byte}}</math>.
Der ESBT-Broadcast (Edge-disjoint Spanning Binomial Tree) Algorithmus<ref>{{cite journal|last1=Johnsson|first1=S.L.|last2=Ho|first2=C.-T.|title=Optimum broadcasting and personalized communication in hypercubes|journal=IEEE Transactions on Computers|volume=38|issue=9|year=1989|pages=1249–1268|issn=00189340|doi=10.1109/12.29465}}</ref> ist ein zeitoptimaler Broadcast für Rechnerbündel mit Hyperwürfel-Netztopologie. Dazu wird das Netz ausgehend von der Quelle (im Folgendem der <math>0</math>-Rechner) in <math>d</math> kantendisjunkte Binomialbäume aufgeteilt, so dass jeder Nachbar der Quelle die Wurzel eines Binomialbaums mit <math>2^d - 1</math> Rechnern ist. Die Quelle zerteilt ihre Nachricht nun in <math>k</math> Teilnachrichten, die dann zyklisch an die Wurzeln der Binomialbäume verteilt werden. Jeder Binomialbaum führt anschließend einen Broadcast aus.
 
=== Construction of the Binomial Trees ===
Verteilt die Quelle in jedem Schritt eine Teilnachricht, hat sie nach <math>k</math> Schritten alle Teilnachrichten verteilt. Der Broadcast in einem Binomialbaum benötigt <math>d</math> Schritte. Insgesamt werden somit <math>k + d</math> Schritte benötigt, bis der Broadcast für die letzte Nachricht abgeschlossen ist und die Laufzeit ergibt sich zu <math>T(n, p, k) = \left(\frac{n}{k} T_\text{byte} + T_\text{start} \right)</math>. Das optimale <math>k^* = \sqrt{\frac{nd \cdot T_\text{byte}}{T_\text{start}}}</math> minimiert die Laufzeit zu <math>T^*(n, p) = n \cdot T_\text{byte} + \log(p) \cdot T_\text{start} + \sqrt{n \log(p) \cdot T_\text{start} \cdot T_\text{byte}}</math>.
 
=== Aufbau der Binomialbäume ===
 
[[File:HypergraphESBT.png|thumb|A <math>3</math>-dimensional hypercubes with three ESBT embedded.]]
 
This section describes how to construct the binomial trees systematically. First, construct a single binomial spanning tree von <math>2^d</math> nodes as follows. Number the nodes from <math>0</math> to <math>2^d - 1</math> and consider their binary representation. Then the children of each nodes are obtained by negating single leading zeroes. This results in a single binomial spanning tree. To obtain <math>d</math> edge-disjoint copies of the tree, translate and rotate the nodes: for the <math>k</math>-th copy of the tree, apply a XOR operation with <math>2^k</math> to each node. Afterwards, right rotate all nodes by <math>k</math> digits. The resulting binomial trees are edge-disjoint and therefore, fulfill the requirements for the ESBT-broadcasting algorithm.
Die <math>d</math> Binomialbäume können systematisch nach der folgender Vorschrift konstruiert werden. Dazu wird zunächst ein Binomialbaum mit <math>2^d</math> Knoten definiert. Anschließend werden durch Translation und Rotation <math>d</math> kantendisjunkte Kopien des Binomialbaums in den Hyperwürfel eingebettet.
 
Ein einzelner Binomialbaum hat Knoten <math>0</math> als Wurzel. Die Kinder eines Knotens ergeben sich durch Negation der führenden Nullen in der Binärdarstellung der Knotennummer. Der so resultierende Graph ist offensichtlich ein Binomialbaum. Die Kantenmenge des <math>k</math>-ten Binomialbaums im Hyperwürfel erhält man nun wie folgt: auf jeden Knoten wendet man eine XOR-Operation mit <math>2^k</math> an und verschiebt die Binärdarstellung der Knotennummer anschließend um <math>k</math> Stellen zyklisch nach rechts. Die so entstehenden <math>d</math> Kopien des ausgehenden Binomialbaums sind kantendisjunkt und erfüllen somit die Voraussetzungen des ESBT-Broadcast Algorithmus.
 
== Referenzen ==