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.

Trotz dieser Verbesserung spart man im worst-case nur einen Durchlauf <strong>de</strong>r inneren<br />

Schleife und somit ist <strong>de</strong>r Aufwand auf O(n 3 ) abzuschätzen. Da <strong>de</strong>r best-case (die innere<br />

Schleife wird so selten wie möglich durchlaufen, das be<strong>de</strong>utet, nur auf <strong>de</strong>r Diagonalen<br />

stehen Einser) sehr unwahrscheinlich ist, wäre nur noch <strong>de</strong>r average-case interessant. In<br />

<strong>de</strong>r Regel wird man eine Zeile ca. zur Hälte mit Einsen befüllt haben. Daraus folgt, dass<br />

man ca. die Hälfte <strong>de</strong>r inneren Schleifendurchläufe einsparen kann. Dies ergibt dann<br />

eine Laufzeit von O(n 2 × n 2 ), was aber in <strong>de</strong>r O-Notation wie<strong>de</strong>r auf O(n3 ) abgeschätzt<br />

wird. Diese Modifikation bringt also einen Laufzeitgewinn, aber die Laufzeitkomplexität<br />

än<strong>de</strong>rt sich dadurch nicht.<br />

3.1.1.2. Der Warshall-Algorithmus auf <strong>de</strong>m GCA<br />

Um einen Algorithmus auf einem parallelen Mo<strong>de</strong>ll wie <strong>de</strong>m GCA effizient zu mo<strong>de</strong>llieren,<br />

muss zunächst hergeleitet wer<strong>de</strong>n, welche Schritte parallelisierbar sind:<br />

Bei <strong>de</strong>m Warshall-Algorithmus ist ersichtlich, dass die Herlei<strong>tu</strong>ng <strong>de</strong>r Verbindungen <strong>de</strong>r<br />

Länge 2 jeweils nur von <strong>de</strong>m Startknoten und <strong>de</strong>m Transitknoten abhängig sind. Alle<br />

an<strong>de</strong>ren Knoten wer<strong>de</strong>n an dieser Stelle ignoriert. Also kann man alle Knoten parallel<br />

als Startknoten betrachten und die Verbindungsmöglichkeiten testen. Hierfür benötigt<br />

man O(n) Prozessoren, um wirklich alle Knoten parallel abzuarbeiten.<br />

Eine weitere Möglichkeit zur Parallelisierung bietet sich für je<strong>de</strong>n Knoten bei <strong>de</strong>r Herstellung<br />

<strong>de</strong>r Verbindungen an sich. Im Normalfall wird zuerst überprüft, ob <strong>de</strong>r Startknoten<br />

eine Verbindung zum Transitknoten hat, und falls dies <strong>de</strong>r Fall ist, wird für je<strong>de</strong>n an<strong>de</strong>ren<br />

Knoten geprüft, ob es nun eine Verbindung zu ihm gibt o<strong>de</strong>r schon früher gab. Parallelisiert<br />

man diesen Vorgang, so wer<strong>de</strong>n die Verbindungen zu allen Knoten ausgehend von<br />

einem festem Startknoten und einem festen Transitknoten gleichzeitig gesucht.<br />

Mo<strong>de</strong>lliert man nun diese Parallelisierungsvorschläge auf <strong>de</strong>m GCA, so äußert sich das<br />

folgen<strong>de</strong>rmaßen:<br />

• Um bei einem gegebenem Transitknoten alle Knoten parallel als Startknoten abzuarbeiten,<br />

muss dafür gesorgt wer<strong>de</strong>n, dass je<strong>de</strong> Zeile <strong>de</strong>r Matrix durch eine Zelle<br />

repräsentiert wird [3.2]. Die Zellen können alle parallel arbeiten und garantieren<br />

so die gewünschte Parallelität. Da nur ein lesen<strong>de</strong>r Zugriff auf die Zelle, welche<br />

<strong>de</strong>n Transitknoten repräsentiert, nötig ist, ist diese Art <strong>de</strong>r Mo<strong>de</strong>llierung mit <strong>de</strong>n<br />

Bedingungen <strong>de</strong>s GCA konform.<br />

• Um bei einem gegebenem Transitknoten und einem gegebenem Startknoten alle<br />

Verbindungen parallel zu prüfen und zu modifizieren, gibt es zwei Möglichkeiten:<br />

Bei <strong>de</strong>r ersten Möglichkeit wird je<strong>de</strong>r einzelne Eintrag einer Zeile durch eine Zelle<br />

repräsentiert. Es wer<strong>de</strong>n also n 2 Zellen benötigt. Eines <strong>de</strong>r dabei auftreten<strong>de</strong>n<br />

Probleme ist, dass die Zellen feststellen müssen, mit welchen an<strong>de</strong>ren Zellen sie zu<br />

kommunizieren haben. Da eine Zeile durch mehrere Zellen repräsentiert wird, ist<br />

einerseits auf die Zelle <strong>de</strong>r eigenen Zeile lesend zuzugreifen, welche die Verbindung<br />

30

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!