06.06.2014 Aufrufe

Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...

Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...

Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!