Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Da alle Zellen parallel arbeiten, ist <strong>de</strong>r erste Schritt hier eigentlich been<strong>de</strong>t, allerdings<br />
muss in dieser Mo<strong>de</strong>llierung noch dafür gesorgt wer<strong>de</strong>n, dass die Speicherzelle<br />
wie<strong>de</strong>r ak<strong>tu</strong>alisiert wird. Um dieses Ziel zu erreichen fragt die Speicherzelle nun<br />
parallel bei allen Zellen an und speichert <strong>de</strong>ren Wert T in ihrem Vektor T ab.<br />
• Zweiter Schritt: Im zweiten Schritt sind immer die Paare T(j) und C(j) interessant.<br />
Natürlich kann man je<strong>de</strong> Zelle bei <strong>de</strong>r Speicherzelle nachfragen lassen,<br />
allerdings wollen ja alle Zellen alle T(j) und C(j) wissen, weshalb es geschickter ist,<br />
die Speicherzelle die Koordination übernehmen zu lassen. Innerhalb von n Takten<br />
stellt sie jeweils das Paar (T(j), C(j)) bereit und je<strong>de</strong> Zelle, die noch auf <strong>de</strong>r Suche<br />
nach ihrem Wert ist, kann sich dieses Paar abholen. Die Zellen selbst übernehmen<br />
dann intern die Überprüfung, ob das Tupel die Bedingung erfüllt o<strong>de</strong>r nicht.<br />
Da nur T(j) abgespeichert wer<strong>de</strong>n muss, kann dieses Verfahren noch dahingehend<br />
optimiert wer<strong>de</strong>n, dass die Speicherzelle nur solche Paare bereitstellt, die ungleich<br />
sind. Allerdings wird dann ein Abbruch<strong>tu</strong>pel benötigt, damit die Zellen wissen,<br />
dass sie ihren Wert C in <strong>de</strong>r Variablen T speichern sollen.<br />
Anschließend muss wie<strong>de</strong>r die Speicherzelle von allen Zellen die T-Werte abfragen<br />
und an <strong>de</strong>r korrekten Stelle ihres Vektors T speichern.<br />
• Dritter Schritt: Da je<strong>de</strong> Zelle i ihren ak<strong>tu</strong>ellen Wert T(i) kennt, kann das Kopieren<br />
<strong>de</strong>s Vektors T in <strong>de</strong>r Speicherzelle und <strong>de</strong>r Werte T(i) in <strong>de</strong>n Zellen gleichzeitig<br />
geschehen.<br />
• Vierter Schritt: Im vierten Schritt wird log(n)-mal <strong>de</strong>r folgen<strong>de</strong> Ablauf durchgeführt:<br />
Je<strong>de</strong> Zelle fragt bei <strong>de</strong>r Speicherzelle <strong>de</strong>n Wert an, <strong>de</strong>r im Vektor T an <strong>de</strong>r Stelle<br />
T(i) steht (<strong>de</strong>n Wert T(i) kennt die Zelle ja bereits, da er in ihrer eigenen Variable<br />
T steht). Die Antwort <strong>de</strong>r Speicherzelle wird in <strong>de</strong>r Variablen T <strong>de</strong>r anfragen<strong>de</strong>n<br />
Zelle gespeichert.<br />
Nachfolgend muss wie<strong>de</strong>r die Speicherzelle ihren Vektor T ak<strong>tu</strong>alisieren und erst<br />
dann darf die Schleife erneut durchlaufen wer<strong>de</strong>n.<br />
• Fünfter Schritt: In diesem Schritt muss je<strong>de</strong> Zelle genau einmal bei <strong>de</strong>r Speicherzelle<br />
anfragen. Gefragt wird in diesem Fall nach <strong>de</strong>m Wert <strong>de</strong>s Vektors B an<br />
<strong>de</strong>r Stelle T(i). Daraufhin bil<strong>de</strong>t je<strong>de</strong> Zelle für sich das Minimum und speichert<br />
<strong>de</strong>n Wert in C. Nach<strong>de</strong>m je<strong>de</strong> Zelle mit ihrer Berechnung fertig ist, fragt die Speicherzelle<br />
wie<strong>de</strong>r alle Werte C <strong>de</strong>r Zellen ab und ak<strong>tu</strong>alisiert so ihren Vektor C.<br />
Die Simulation auf <strong>de</strong>m GCA ist also möglich. Aufgrund <strong>de</strong>r Speicherzelle hat man zwar<br />
mehr Ak<strong>tu</strong>alisierungsaufwand, allerdings müssen die Zellen nicht mehr untereinan<strong>de</strong>r<br />
kommunizieren. Dadurch können viele Verbindungen eingespart wer<strong>de</strong>n. Diese Mo<strong>de</strong>llierung<br />
ist nicht laufzeitoptimal. Im nächsten Abschnitt wer<strong>de</strong>n Möglichkeiten untersucht,<br />
die Speicherzelle effizient zu mo<strong>de</strong>llieren und die Laufzeitkomplexität zu verbessern.<br />
48