Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius.

Ähnliche Präsentationen


Präsentation zum Thema: "Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius."—  Präsentation transkript:

1 Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

2 2 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

3 3 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

4 4 1. Einleitung linearer Gleichungssysteme Kern vieler numerischer Anwendungen (z.B numerische Lösung partieller Differentialgleichungen) Gesucht Lösung für Ax =b –nichtsinguläre Matrix A R n n –Vektor b R n und Lösungsvektor x R n Direkte-Verfahren –exakte Lösung –z.B. Gauß-Elimination, zyklische Reduktion Iterative-Verfahren –Näherung an die Lösung –z.B. Jacobi-Verfahren, Gauß-Seidel-Verfahren, Methode der konjugierten Gradienten

5 5 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

6 6 2.1 Gauß-Elimination Idee: Transformiere Ax=b in äquivalentes Gleichungssystem Ax = b, so dass A eine obere Dreiecksmatrix bildet.

7 7 2.1 Gauß-Elimination Transformation benötigt n-1 Schritte –Elemente von A und b für k< j n und k

8 8 2.1 Gauß-Elimination Lösung durch Rückwärtseinsetzen, für k = n,n-1,...,1: sequentielle Implementierung Θ(n 3 ) (drei ineinander verschachtelte Schleifen)

9 9 2.1 Gauß-Elimination Elemente auf der Diagonalen gleich Null Fehler, da Division durch Null sehr kleine Elemente auf der Diagonalen Rundungsfehler daher Elemente auf der Diagonalen durch ein andere, sogenannte Pivotelemente, ersetzten: –Spaltenpivotsuche: –betragsgrößte a rk (k) aus a kk (k),..,a nk (k) suchen –vertauschen der Zeilen k und r, falls r k.

10 Gauß-Elimination zeilenblockweise Aufteilung der Matrix A und des Vektor b mit p = Anzahl Prozessoren, wird P i für 1 i p, ein n/p großer Zeilenblock zugewiesen Jeder Prozessor P i hat –ein 2-dimensionales Array a[n/p][n] (Koeffizienten Matrix A) –Array b[n/p] (Werten des Vektors b) –Array marked[n/p] (markieren der Pivotzeile) –Array pivot[n/p],(wann war Zeile Pivotzeile) parallelen Implementierung: (Hypercube)

11 11 zunächst Array marked mit 0 initialisieren dann in n-1 Schritten die obere Dreiecksmatrix berechnen: 1. lokales Pivotelement bestimmen: P i ermittelt unter den Elementen a[r][k], mit r= 1...n/p und marked[r]=0 das lokale Maximum 2.1 Gauß-Elimination a P2 P1 b markedpivot P2 P1 b

12 12 2. globales Pivotelement bestimmen: Aus den lokalen Maxima wird das globale Maximum, durch Auruf der Funktion MAX_TOURNAMENT(int i, int value, int winner) ermittelt 2.1 Gauß-Elimination int MAX_TOURNAMENT(int i, int value, int winner){ int j,k; for(k=0; kvalue){ value = tmp_value; winner = tmp_winner; } return winner;}

13 P2 P P2 P1 3. Pivotzeile Markieren & Verteilen: wenn P i Gewinner, dann marked[r]=1, pivot[r]=k, Elemente a[r][k]... a[r][n] und b[r] in Hilfsvektor kopieren und an alle andere Prozessoren senden 2.1 Gauß-Elimination 4. Berechnung der Eliminationsfaktoren: P i berechnet für seine lokalen Zeilen i, mit i =1,...n/p, mit marked[i]=0, die Eliminationsfaktoren marked pivot b a P2 P P2 P P2 P P2 P1

14 Gauß-Elimination 5. Neu Berechnung Matrixelemente: P i berechnet seine Elemente a[i][j], und b[i], i=1...n/p, j=k+1...n, mit marked[i]=0, neu. jeder Prozessor sucht in seinem Array marked nach marked[j]=0 und setzt pivot[j]=n Lösung des Gleichungssystems durch Rückwärtseinsetzten P2 P , , ,5 3 6, P2 P1 marked pivotba

15 Gauß-Elimination Berechnungsaufwand: Kommunikationsaufwand: Initialisierung marked Pivotzeile ermitteln Pivotzeile kopieren Eliminationsfaktoren & Elemente von A, b neu berechnen pivot

16 Gauß-Elimination Vorteile: –Vorhersagbarkeit der Laufzeit, des Speicherbedarfs –Berechnung einer exakten Lösung Nacheilt: – bei dünnbesetzten Matrizen entsteht fill-in

17 17 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

18 zyklische Reduktion Eine Matrix A mit A= (a ji ) i,j=1,...,n R n n heißt Bandmatrix mit halber Bandbreite r, falls a ij = 0 für |i-j| >r. Falls r = 1, so heißt A Tridiagonalmatrix Gauß-Elimination hier nicht Sinnvoll!

19 zyklische Reduktion Falls A symmetrisch und positiv definit Lösung mittels –rekursiven Verdoppelns oder zyklischer Reduktion Ausgangspunkt beider Verfahren: Idee: x i-1 und x i+1 aus der i-ten Gleichung, durch einsetzen von geeigneten Vielfachen der Gleichungen i+1 und i-1, zu eliminieren

20 zyklische Reduktion Nach log n Schritten, nur noch Elemente der Hauptdiagonalen ungleich Null Lösung ist einfach abzulesen Pro Schritt werden O(n) Werte berechnet: O(n log n) gegenüber O(n) für Gauß-Elimination aber Berechnung der Werte innerhalb eines Schrittes parallel möglich

21 zyklische Reduktion zyklische Reduktion : die Zahl der berechneten Werte in jedem Schritt halbiert erfordert abschließende Substitutionsphase rekursives Verdoppeln : Diagonalmatrix in log n Schritten ermitteln

22 zyklische Reduktion parallele Implementierung: Zeilen der Tridiagonalmatrix A blockweise auf p Prozessoren aufgeteilen Zur Vereinfachung: –n = p q mit q –q = 2 Q mit Q N –P i speichert Zeilenblock der Größe q, mit den Zeilen (i-1)q+1,...,i*q, für 1 i p

23 zyklische Reduktion parallele Implementierung: 1. zyklische Reduktion: bis nur noch eine Gleichung pro Prozessor vorhanden log p Stufen x4 x8 2. rekursives Verdoppeln: das nur noch p-dimensionale Gleichungssystem wird nun mittels rekursiven Verdoppeln in gelöst 3. Substitutionsphase: Ermittlung der noch fehlenden Werte des Lösungsvektors x Q Stufen x6 x2 x7 x3 x5 x1 Q Stufen

24 zyklische Reduktion Aufwand Phase 1: Aufwand Phase 2: Aufwand Phase 3:

25 zyklische Reduktion Aufwand Insgesamt:

26 26 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

27 klassische iterative Verfahren Berechnen Folge von Approximationsvektoren {x (k) } k=1,2,...,, die gegen die gesuchte Lösung x * R n konvergieren Zerlegung der Matrix A in A=M-N mit M,N R n n –M nichtsinguläre Matrix –M -1 leicht zu berechnen, z.B. Diagonalmatrix x * erfüllt Gleichung: Mx * = Nx * +b. Iterationsvorschrift: Mx (k+1) = Nx (k) + b

28 28 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

29 Jacobi-Verfahren Zerlegung von A in A=D-L-R mit (D,L,R R n n ), –D Diagonalmatrix, L untere Dreiecksmatrix, R obere Dreiecksmatrix (jeweils ohne Diagonale) Iterationsvorschrift: Dx (k+1) =(L+R)x (k) + b In Komponentenschreibweise:

30 Jacobi-Verfahren Abbruchkriterium: relativer Fehler ||.|| Vektornorm, z.B. ||x|| = max i=1,...,n |x i | oder ||x|| 2 =( n i=1 |x| 2 )½.

31 Jacobi-Verfahren parallel Implementierung: P i mit i=1,...,p speichert die Werte x i(n/p),..., x (i+1)(n/p)-1 inklusive dazugehörige Zeilen von A und der Werte von b jeder P i führt nun alternierend folgende Aktionen aus, bis Abbruchkriterium erfüllt: 1. P i sendet seine lokal gehaltenen Elemente des Vektors x (k) an alle anderen Prozessoren (All-to-All Broadcast) 2. P i berechnet x (k+1) für seine Elemente x j (k+1) mit j=i(n/p),...,(i+1)(n/p)-1 3. Test des Abbruchkriterium

32 Jacobi-Verfahren Aufwand : –In Schritt 1. sendet P i n/p Werte an p-1 Prozessoren Kommunikationsaufwand Θ((p-1) (n/p)). –In Schritt 2. n/p Elemente des Vektors x (k+1) berechnen, mit Rechenaufwand von Θ(n (n/p)) –Der Test auf Abbruch in 3. erfordert einen Aufwand von Θ (log p). Bewertung: –Konvergenz nicht gesichert, niedrige Konvergenzrate es gezeigt, dass e(n 2 /2) Iterationen notwendig sind damit der Fehler um 10 -e sinkt Für n= 64 wären ca. 3(64 2 /2)= 6144 Iterationen notwendig um den Fehler um zu reduzieren –kein fill-in, geringer Speicherbedarf bei dünnbesetzten Matrizen

33 33 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

34 Gauß-Seidel-Verfahren Zerlegung der Matrix A anlog zum Jacobi-Verfahren, A=D-L-R (D,L,R R n n ) Iterationsschritt: (D-L)x (k+1) =Rx (k) +b. in Komponentenschreibweise

35 Gauß-Seidel-Verfahren Einbeziehung der neu Berechneten Approximation deutlich verbesserte Konvergenzrate Konvergenzrate: n (e/3) Iterationen um den Fehler um den Faktor 10 -e zu senken aber Datenabhängigkeiten, die eine Parallelisierung des Verfahrens erschweren

36 Gauß-Seidel-Verfahren In Dünnbesetzte Matrizen weniger Datenabhängigkeiten Eine Möglichkeit Rot-Schwarz-Anordnung, für Gleichungssysteme, die von einer Gitterstruktur herrühren x i,j = (x i-1,j + x i+1,j + x i,j-i + x i,j+1 ) / 4 Bsp. Temperaturverlauf im Wasserbad

37 Gauß-Seidel-Verfahren Für n = 16 Punkte ergibt sich folgendes Gitter und Matrix A

38 Gauß-Seidel-Verfahren Rote-Schwarz-Anordnung : –rot Punkt nur schwarze Nachbarn und umgekehrt –Die Rote von 1,...,nS, numerieren –die Schwarze von nS+1,...,nR+nS numerieren (nR+nS=n) neue Matrix  (Permutation von A) Die Zerlegung von  in  =D-L-R (D,L,R R n n ) mit

39 Gauß-Seidel-Verfahren Iterationsschritt: in Komponentenschreibweise:

40 Gauß-Seidel-Verfahren maximal p=n r (bzw. p=n s ) Prozessoren Aufteilung anhand des Gitters vorgenommen –wird P j Gitterpunkt i zugeordnet, dann P j für Berechnung der Approximationen von x i zuständig –Aufteilung z.B. zeilenblockweise –bei p Prozessoren erhält jeder Prozessor n / p Gitterzeilen (½(n / p) rote und schwarze Punkte) parallel Implementierung:

41 Gauß-Seidel-Verfahren wähle beliebigen Startvektor Prozessoren iterieren folgende Schritte bis der Test auf Abbruch erfolgreich 1. P i sendet seine lokal Elemente von x S (k) an alle anderen Prozessoren (All-to-All Broadcast) 2. P i berechnet die neue Approximation x R (k+1) für seine Elemente von x R (k) 3. P i sendet seine Elemente von x R (k+1) an alle anderen Prozessoren (All-to-All Broadcast) 4. P i berechnet die neue Approximation x S (k+1) für seine Elemente von x S (k) 5. Test auf Abbruch

42 Gauß-Seidel-Verfahren Der Rechenaufwand fast identisch zu dem des Jacodi- Verfahrens –In Schritt 2 und 4 jeweils n/2p Elemente der neuen Approximation berechnen, insgesamt die gleiche Anzahl, wie beim Jacobi-Verfahrens eine All-to-All Broadcastoperation mehr erforderlich (Schritt 1 und 3) zusätzlicher Aufwand durch verbessertes Konvergenzverhalten kompensiert Aufwand:

43 43 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

44 Methode der konjugierten Gradienten Voraussetzung: Matrix A R n n positiv definit und symmetrisch Lösung x* des Gleichungssystems entspricht dem Minimum der Funktion: f(x) ist konvex und besitzt eindeutiges Minimum x*

45 Methode der konjugierten Gradienten Iterationsschritt: – (k) Schrittweite, p (k) Richtungsänderung –Notwendige Bedingung, mit r = Ax-b : –Hinreichende Bedingung: Bestimmung von (k) bei bekanntem p(k) : immer erfüllt !

46 Methode der konjugierten Gradienten Wahl des Richtungsvektors p (k) : –die Richtungsvektoren p (k) sind so zu wählen, dass sie konjugierte Basis des R n bzgl. A bilden: Zwei Vektoren p,q R n sind bzgl. einer symmetrischen, nicht singulären Matrix A konjugiert falls gilt q T Ap=0. Ist A positiv definit so bilden die linear unabhängigen Vektoren p 1,...,p n, mit p i 0, i=1,...,n und (p i ) T Ap j =0 für alle i,j eine konjugierte Basis des R n bzgl. A. –Falls die Richtungsvektoren eine konjugierte Basis des R n bzgl. A bilden, dann liegt die exakte Lösung nach maximal n Schritten vor.

47 Methode der konjugierten Gradienten Der Algorithmus: –Initialisierung: wähle Startvektor x (0) und setzte p (0) =-r (0) =b-Ax (0) sowie k=0 –Iteration: solange ||r (k) ||> berechne 1. q (k) =Ap (k) 2. k = [(r (k) ) T r (k) ] / [ (p (k) ) T q (k) ] 3. x (k+1) =x (k) + k p (k) 4. r (k+1) =r (k) + k q (k) 5. k = [(r (k+1) ) T r (k+1) ]/ [(r (k) ) T r (k) ] 6. p (k+1) =-r (k+1) + k p (k) 7. k++ Basisoperationen: Matrix-Vektor-Multiplikation ein inneres Produkt eine Vektor-Addition ein inneres Produkt eine Vektor-Addition

48 Methode der konjugierten Gradienten parallele Implementierung : zeilenblockweise Aufteilung von A und blockweise Aufteilung der Vektoren durch Parallelisierung der verwendeten Basisoperationen eine Matrix-Vektor-Multiplikation zwei innere Produkte drei Vektor-Additionen

49 Methode der konjugierten Gradienten Rechenaufwand:

50 50 Gliederung 1. Einleitung 2. Direkte Verfahren 2.1 Gauß-Elimination 2.2 zyklische Reduktion 3. Iterative Verfahren 3.2 Methode der konjugierte Gradienten Gauß-Seidel-Verfahren Jacobi-Verfahren 3.1 klassische iterative Verfahren 4. Zusammenfassung

51 51 4. Zusammenfassung Das Gauß-Eliminations-Verfahren –exakte Lösung –Vorhersagbare Rechenzeit –auf fast alle linearen Gleichungssystem Anwendbar –Nachteil fill-in nur für fast voll besetze Matrizen geeignet zyklische Reduktion –für Matrizen mit spezieller Struktur –exakte Lösung –Vorhersagbare Rechenzeit

52 52 4. Zusammenfassung Iterative Verfahren –kein fill-in –Rechenzeit nicht Vorhersagbar –für dünnbesetze Matrizen geeignet –GS-Verfahren konvergiert schneller als das Jacobi-Verfahren, aber Datenabhängigkeiten –bei symmetrischer, positiv definiter Koeffizientenmatrix Methode der konjugierten Gradienten exakte Lösung bei rundungsfehlerfreier Rechnung nach höchstens n Schritten

53 53 Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius."

Ähnliche Präsentationen


Google-Anzeigen