6.1 Vektorisierung



next up previous contents
Next: 6.2 Resultate auf der Up: 6 Vektor- und Parallelrechner-Implementationen Previous: 6 Vektor- und Parallelrechner-Implementationen

6.1 Vektorisierung

 

Die Implementationen des Programms MINIMOS auf den Supercomputern Fujitsu VP200 und Cray-2 sind identisch und basieren auf MICCG(0) für die Poissongleichung (Modifikationsfaktor ) [37] und auf ILU-CGS() bzw. ILU-CGS() für die beiden Kontinuitätsgleichungen. Die vorgenommene Vektorisierung der Gleichungslöser erfolgt nach der Hyperebenen-Methode [5][117][118]. Diese beruht auf der Beobachtung, daß sich im Fall der ILU-Faktorisierung alle Unbekannten, die sich in den Hyperebenen (,,computational wavefronts``) des dreidimensionalen Simulationswürfels befinden

 

parallel faktorisiert, bzw. bei den Rücksubstitutionen der - und -Faktoren parallel berechnet werden können. Der Parameter notiert den Füllgrad, , und notieren die laufenden Indizes in x-, y- und z-Richtung mit Maximalwerten von NX, NY und NZ. Der pro Hyperebene konstante Parameter variiert von 2 bis NX+NY+NZ2.
Die Berechnungen in den -Hyperebenen sind für nur von den Unbekannten in , für nur von den Unbekannten in abhängig. Die Anzahl von Variablen in den ist eine von und von abhängige Funktion, die anfangs bis zu einem Maximalwert von wächst und dann wieder abnimmt.
Für die Realisierung der Hyperebenen-Methode auf einem Vektor- oder Parallelrechner benutzt man am einfachsten ein Verfahren, wie es Traar vorschlägt [112]. In den Listenvektor schreibt man sequentiell die Adressen der abzuarbeitenden Punkte in aufeinanderfolgenden Hyperebenen. In einen zweiten, kleineren Listenvektor schreibt man die Anfangsadressen der ersten Punkte aller Hyperebenen. Um die Adressierung nichtexistierender Punkte auf der Vorder- und Rückseite des Simulationswürfels zu vermeiden, weitet man das Feld der Unbekannten mit zwei zusätzlichen Ebenen (Vorder- und Rückseite) auf und füllt diese beiden Ebenen mit Nullen. Das folgende FORTRAN-Codesegment gibt die resultierende Schleife der Rücksubstitution des -Faktors (bei =) wieder: 0.3 cm

      DO 1 L=2,NX+NY+NZ-2
      DO 1 M=LPTR(L-1)+1,LPTR(L)
      I=LIST(M)
1     X(I)=R(I)-B(I)*X(I-1)-D(I)*X(I-NX)-F(I)*X(I-NX*NY)
0.3 cm Die Zahlenvektoren bedeuten hierin: die rechte Seite des Gleichungssystems und , , die drei Diagonalen der strikt unteren Dreiecksmatrix von der Mitte der Matrix aus gezählt. Die innere Schleife mit dem Index ist vektorisierbar. In analoger Weise erfolgt die Vektorisierung der Vorkonditionierer mit und die ILU()-Faktorisierung am Beginn der Iteration.
Der Grad der Parallelisierung läßt sich durch eine ,,Verdrehung`` (Twisting) der Hyperebenen in der Mitte des Würfels steigern. Die Faktorisierung bzw. die Rücksubstitutionen erfolgen parallel von zwei diametralen Ecken des Würfels in Richtung der diese Ecken verbindenden Raumdiagonale bis zur Mitten-Hyperebene. Diese stellt einen Synchronisationspunkt für die beiden Rücksubstitutionsprozesse dar. Die Aufspaltung in zwei Mengen von Hyperebenen verkleinert allerdings die Vektorlängen in den beiden Würfelhälften. Diese Methode wurde auf Maschinen mit zwei parallel arbeitenden Vektorprozessoren getestet (VAX 6420), dabei wurde jedoch keine nennenswerte Verbesserung gegenüber der nicht-verdrehten Faktorisierung festgestellt. Es wurde auch keine Veränderung der Konvergenz bemerkt, im Gegensatz zu den Beobachtungen in [118].

  
Tabelle: Rücksubstitution bei Hyperplane-ILU(). Zeiten für eine Rücksubstitution (BA) in , Vektorisierungsgewinn gegenüber Code ohne Vektorisierung (SP-UP) und Megaflop-Rate (MF) auf einem -Gitter. Mittelwerte über Messungen.


Laufzeitexperimente wurden auf einem Fujitsu VP200-Computer, einer Cray-2, auf einem Alliant-FX40-Superminicomputer und einer VAX 6260 vorgenommen. In der Tabelle 6.1 sind die Resultate (ohne VAX) von Zeitmessungen bei der Rücksubstitution zusammengefaßt. Die Rücksubstitution mit = erreicht auf der VP200 etwa Megaflops.

  
Tabelle: Notwendige Konvergenzbeschleunigung gegenüber ILU() durch zusätzlichen Fill-In für =,, um einen Geschwindigkeitsvorteil zu erbringen.


Eine praktische Frage ist jene nach der Wahl des Parameters , wobei Werte größer als aufgrund des Aufwands bei der Faktorisierung nicht ratsam sind. In der Tabelle 6.2 wurden Konvergenzbeschleunigungen berechnet, die notwendig sind, um höheren Fill-In vorteilhaft zu machen. Da bei vielen Simulationen ILU() ca. doppelt so schnell konvergiert wie ILU(), ist ILU() mit einem deutlichen Stabilitätsbonus bevorzugt. Bei niederen Iterationszahlen wirkt sich jedoch der höhere Faktorisierungsaufwand für ILU() deutlich aus, weiters ist der erhöhte Speicheraufwand für ILU() im dreidimensionalen Fall nicht unerheblich.

  
Tabelle: Hyperplane-ILU() auf der VAX 6260. Beschleunigung (SP-UP) bei Erhöhung der Prozessorzahl von bis , und Megaflop-Rate (MF).


Für ein Multiprozessorsystem (VAX 6260) wurde die Beschleunigung durch Erhöhung paralleler Prozessoren von auf gemessen. (Selbes Testbeispiel wie zuvor). Das Ergebnis in Tabelle 6.3 demonstriert die gute Parallelisierbarkeit der Hyperebenen-Methode auf einem Multiprozessorsystem.



next up previous contents
Next: 6.2 Resultate auf der Up: 6 Vektor- und Parallelrechner-Implementationen Previous: 6 Vektor- und Parallelrechner-Implementationen



Martin Stiftinger
Fri Oct 14 21:33:54 MET 1994