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