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.
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