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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!