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.
Prozessoren in zwei Schritten erledigt wer<strong>de</strong>n (ein Schritt <strong>de</strong>n Wert lesen und ein Schritt<br />
<strong>de</strong>n Wert in die neue Variable schreiben).<br />
Die Zuweisung <strong>de</strong>s vierten Schritts ist mit n Prozessoren in O(1) möglich, allerdings<br />
muss die Anweisung log(n) mal wie<strong>de</strong>rholt wer<strong>de</strong>n, was sich auch mit mehr Prozessoren<br />
nicht vermei<strong>de</strong>n lässt. Der Zeitaufwand <strong>de</strong>s vierten Schritts ist also O(log(n)) und kann<br />
nicht optimiert wer<strong>de</strong>n. Das be<strong>de</strong>utet, dass auch die Laufzeit <strong>de</strong>s Gesamtalgorithmus<br />
nicht mehr verbessert wer<strong>de</strong>n kann.<br />
Der fünfte Schritt ist wie<strong>de</strong>r mit n Prozessoren in O(1) realisierbar.<br />
Da alle Schritte in maximal O(log(n)) ausführbar sind und <strong>de</strong>r vierte Schritt minimal<br />
O(log(n)) Schritte benötigt, ist anschaulich dargelegt, weshalb <strong>de</strong>r Algorithmus eine<br />
Laufzeitkomplexität von O(log(n) 2 ) hat. Die Anzahl <strong>de</strong>r Prozessoren lässt sich noch auf<br />
O( n2<br />
log 2 n)<br />
) reduzieren, wie in [CLC82] dargestellt ist.<br />
3.1.3.3. Mo<strong>de</strong>llierung auf <strong>de</strong>m GCA<br />
Da <strong>de</strong>r Algorithmus von Hirschberg schon so konstruiert ist, dass er die parallelen<br />
Möglichkeiten <strong>de</strong>r P-RAM ausnutzt, ist es nicht mehr nötig, zu überprüfen, an welchen<br />
Stellen er sich parallelisieren lässt. Die eigentliche Aufgabe bei diesem Algorithmus<br />
liegt nunmehr darin, zu überprüfen, ob alle parallelen Möglichkeiten <strong>de</strong>r P-RAM, die hier<br />
genutzt wer<strong>de</strong>n, sich auch auf <strong>de</strong>m GCA nutzen lassen. Allerdings wird hier zunächst<br />
einmal ein Ansatz <strong>de</strong>r Mo<strong>de</strong>llierung verfolgt, <strong>de</strong>r verständlich ist, auch wenn dadurch die<br />
Laufzeitkomplexität schlechter wird. Nach<strong>de</strong>m die Mo<strong>de</strong>llierung veranschaulicht wur<strong>de</strong>,<br />
wird darauf eingegangen, wie die Laufzeit optimiert wer<strong>de</strong>n kann.<br />
Auf die erste Abweichung trifft man bei <strong>de</strong>n Vektoren T,B und C. Diese wer<strong>de</strong>n im Algorithmus<br />
von Hirschberg als globale Variablen genutzt, auf die alle Prozessoren sowohl<br />
lesend als auch schreibend zugreifen dürfen. Da <strong>de</strong>r GCA über keinen globalen Speicher<br />
verfügt und auch auf die Zellinhalte frem<strong>de</strong>r Zellen nicht schreibend zugegriffen wer<strong>de</strong>n<br />
darf, ist das ein Problem.<br />
Diese Problematik lässt sich mit <strong>de</strong>m GCA jedoch elegant umgehen, in<strong>de</strong>m man die<br />
Vektoren auf die Prozessoren aufteilt. Mit diesem Lösungsansatz hält dann je<strong>de</strong> Zelle i<br />
die Werte T[i],B[i] und C[i]. Da je<strong>de</strong> Zelle i nur auf <strong>de</strong>n i-ten Wert schreibend zugreift,<br />
ist damit bereits das Problem <strong>de</strong>s Schreibens auf Zellinhalte frem<strong>de</strong>r Zellen gelöst.<br />
Ein Nachteil dieses Lösungansatzes ist allerdings, dass <strong>de</strong>r Kommunikationsaufwand<br />
recht hoch wird. Allein im vierten Schritt ist es sehr wahrscheinlich, dass auf <strong>de</strong>n Zellinhalt<br />
an<strong>de</strong>rer Zellen zugegriffen wer<strong>de</strong>n muss. Der Kommunikationsaufwand ist dabei<br />
weniger das Problem, als vielmehr die Tatsache, dass viele Verbindungen am Anfang<br />
hergestellt wer<strong>de</strong>n müssen, die im weiteren Verlauf even<strong>tu</strong>ell ungenutzt bleiben.<br />
Um auch diese Problematik zu umgehen, wird eine Zelle als Speicherzelle ausgezeichnet,<br />
auf die alle Zellen lesend zugreifen. Damit diese Zelle aber immer die korrekten<br />
Variableninhalte bereit hält, muss sie am En<strong>de</strong> je<strong>de</strong>s Schritts bei je<strong>de</strong>r Zelle <strong>de</strong>n ak<strong>tu</strong>ellen<br />
Stand <strong>de</strong>r entsprechen<strong>de</strong>n Variable abfragen. Das heißt, die Speicherzelle fragt nach<br />
46