53
Lösung linearer Gleichungssysteme Seminar “Parallele Programmierung“ Nico Ziborius

Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

Embed Size (px)

Citation preview

Page 1: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

Lösung linearer Gleichungssysteme

Seminar “Parallele Programmierung“

Nico Ziborius

Page 2: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

2

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 3: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

3

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 4: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

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 ARnn

– Vektor bRn und Lösungsvektor xRn

• 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

Page 5: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

5

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 6: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

6

2.1 Gauß-Elimination

Idee:

• Transformiere Ax=b in äquivalentes Gleichungssystem A‘x = b‘, so dass A‘ eine obere Dreiecksmatrix bildet.

Page 7: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

7

nikfür )(

)(

aal k

kk

k

ikik

alaak

kjik

k

ij

k

ij

)()()1(*

blbbk

kik

k

i

k

i

)()()1(*

2.1 Gauß-Elimination• Transformation benötigt n-1 Schritte

– Elemente von A und b für k< j n und k <i n neu berechnen:

– Eliminationsfaktoren berechnen:

aa

aaaaa

aaaaaaaaa

k

nn

k

nk

k

kn

k

kk

k

nk

k

kk

k

kk

nkk

nkk

k

)()(

)()(

)1(

,1

)1(

,1

)1(

1,1

)2(

2

)2(

2

)2(

1,2

)2(

22

111,11211

)(

00

0

0

A

• Schritt k , 1 k n-1

• A(k+1), b(k+1) aus A(k), b (k) berechnen:

Page 8: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

8

2.1 Gauß-Elimination

• Lösung durch Rückwärtseinsetzen, für k = n,n-1,...,1:

n

kj

n

kj

n

kn

kk

k aba 1

j

)()(

)( xx1

• sequentielle Implementierung Θ(n3)

(drei ineinander verschachtelte Schleifen)

Page 9: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

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 ark(k) aus akk

(k),..,ank(k) suchen

– vertauschen der Zeilen k und r , falls r k.

Page 10: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

10

2.1 Gauß-Elimination

• zeilenblockweise Aufteilung der Matrix A und des Vektor b

• mit p = Anzahl Prozessoren, wird Pi für 1 i p, ein n/p großer Zeilenblock zugewiesen

• Jeder Prozessor Pi 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)

Page 11: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

11

• zunächst Array marked mit 0 initialisieren

• dann in n-1 Schritten die obere Dreiecksmatrix berechnen:

1. lokales Pivotelement bestimmen:

Pi ermittelt unter den Elementen a[r][k], mit r= 1...n/p und marked[r]=0 das lokale Maximum

2.1 Gauß-Elimination

a

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P1

b marked pivot

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P1

b

Page 12: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

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; k<log p-1; k++){

j=i^(1<<k);[j]tmp_value value;[j]tmp_winner winner;if(tmp_value>value){

value = tmp_value; winner = tmp_winner;}

}return winner;}

Page 13: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

13

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P11

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

1

0

1

-

2

-P2

P13. Pivotzeile Markieren &

Verteilen: wenn Pi 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: Pi berechnet für seine lokalen Zeilen i, mit i =1,...n/p, mit marked[i]=0, die Eliminationsfaktoren

marked pivotba

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P11

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

1

0

1

-

2

-P2

P1

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P11

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

1

0

1

-

2

-P2

P1

Page 14: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

14

2.1 Gauß-Elimination

5. Neu Berechnung Matrixelemente: Pi 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

1

0

0

0

2

4

-8

-1

3

4

-2

-5

-4

-1

10

11

-6

14

3

7

1

0

0

0

1

-

-

-P2

P11

0

0

0

2

0

-8

0

3

5

-2

-4,75

-4

4

10

9,75

-6

15,5

3

6,625

1

0

1

0

1

-

2

-P2

P1

marked pivotba

Page 15: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

15

2.1 Gauß-Elimination

.)()(),(1

11

n

ip

nin

p

nin

p

n

p

npnt

2

3

1 ),( np

npnt

Berechnungsaufwand:

Kommunikationsaufwand:

,loglog)(log),(1

12

n

i

ppinppnt

pnpnn

pinppntn

i

loglog2

)1(log)(1log),( 2

1

12

Initialisierung marked Pivotzeile ermitteln

Pivotzeile kopieren

Eliminationsfaktoren & Elemente von A, b neu berechnen

pivot

Page 16: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

16

2.1 Gauß-Elimination

• Vorteile:

– Vorhersagbarkeit der Laufzeit, des Speicherbedarfs

– Berechnung einer exakten Lösung

• Nacheilt:

– bei dünnbesetzten Matrizen entsteht fill-in

Page 17: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

17

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 18: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

18

2.2 zyklische Reduktion

• Eine Matrix A mit A= (aji) i,j=1,...,n Rnn heißt Bandmatrix mit halber Bandbreite r, falls aij = 0 für |i-j| >r.

• Falls r = 1 , so heißt A Tridiagonalmatrix

nn

n

ba

c

ba

cba

cb

A

0

0

1

33

222

11

• Gauß-Elimination hier nicht Sinnvoll!

Page 19: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

19

2.2 zyklische Reduktion

• Falls A symmetrisch und positiv definit Lösung mittels– rekursiven Verdoppelns oder zyklischer Reduktion

• Ausgangspunkt beider Verfahren:

nn

iiii

yb

ifürycba

ycb

x xa

1-n,2, x x x

xx

n 1-nn

1ii1-i

12111

Idee:

• xi-1 und xi+1 aus der i-ten Gleichung, durch einsetzen von geeigneten Vielfachen der Gleichungen i+1 und i-1, zu eliminieren

Page 20: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

20

2.2 zyklische Reduktion

• Nach log n Schritten, nur noch Elemente der Hauptdiagonalen ungleich Null

Lösung ist einfach abzulesen

nn

n

ba

c

ba

cb

cb

A

00

0

0

00

00

)1(

)1(2

3)1(

3

)1(2

)1(2

)1(1

)1(1

)1(

• Pro Schritt werden O(n) Werte berechnet: O(nlog n) gegenüber O(n) für Gauß-Elimination

aber Berechnung der Werte innerhalb eines Schrittes parallel möglich

Page 21: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

21

2.2 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

Page 22: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

22

2.2 zyklische Reduktion

parallele Implementierung:

• Zeilen der Tridiagonalmatrix A blockweise auf p Prozessoren aufgeteilen

• Zur Vereinfachung:

– n = pq mit q

– q = 2Q mit Q N

– Pi speichert Zeilenblock der Größe q, mit den Zeilen (i-1)q+1,...,i*q, für 1 i p

Page 23: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

23

2.2 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

Page 24: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

24

2.2 zyklische Reduktion

• Aufwand Phase 1:

op

Q

kkop t

p

nqtpnT

162

44),(

11

)4(log2)4(2),( 221 ssss tp

ntQpnC

• Aufwand Phase 2:

opopopop ttptptpnT log16log44),(2

)4(log2),( 22 sstppnC

• Aufwand Phase 3:

15)1(5)12(525),(1

03 p

ntqtttpnT opop

Qop

Q

k

kop

)1(2),( 23 sstpnC

Page 25: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

25

2.2 zyklische Reduktion

• Aufwand Insgesamt:

optp

np

p

npnT

45log1616),(

optpp

n

log1621

)1(2loglog2),( 2sstpp

npnC

)1(2)4(log2 22 ssss ttn

Page 26: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

26

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 27: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

27

3.1 klassische iterative Verfahren

• Berechnen Folge von Approximationsvektoren {x(k)}k=1,2,...,,

die gegen die gesuchte Lösung x*Rn konvergieren

• Zerlegung der Matrix A in A=M-N mit M,N Rnn

– 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

Page 28: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

28

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 29: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

29

3.1.1 Jacobi-Verfahren

• Zerlegung von A in A=D-L-R mit (D,L,R Rnn), – D Diagonalmatrix, L untere Dreiecksmatrix, R obere

Dreiecksmatrix (jeweils ohne Diagonale)

• Iterationsvorschrift: Dx(k+1) =(L+R)x(k) + b

n, 1,...i , 1

,1

)()1(

n

ijj

kjiji

ii

ki xab

ax

• In Komponentenschreibweise:

Page 30: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

30

3.1.1 Jacobi-Verfahren

• Abbruchkriterium: relativer Fehler

)1()()1( kkk xxx

||.|| Vektornorm, z.B. ||x|| = max i=1,...,n|xi| oder ||x||2=(n i=1|x|2)½ .

Page 31: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

31

3.1.1 Jacobi-Verfahren

parallel Implementierung:

• Pi mit i=1,...,p speichert die Werte xi(n/p),..., x(i+1)(n/p)-1 inklusive

dazugehörige Zeilen von A und der Werte von b • jeder Pi führt nun alternierend folgende Aktionen aus, bis

Abbruchkriterium erfüllt:1. Pi sendet seine lokal gehaltenen Elemente des Vektors x(k) an

alle anderen Prozessoren (All-to-All Broadcast)

2. Pi berechnet x(k+1) für seine Elemente xj(k+1) mit j=i(n/p),...,(i+1)

(n/p)-1

3. Test des Abbruchkriterium

Page 32: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

32

3.1.1 Jacobi-Verfahren• Aufwand :

– In Schritt 1. sendet Pi 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(n2/2) Iterationen notwendig sind damit der Fehler um 10-e sinkt

• Für n= 64 wären ca. 3(642/2)= 6144 Iterationen notwendig um den Fehler um 10-3 zu reduzieren

– kein fill-in, geringer Speicherbedarf bei dünnbesetzten Matrizen

Page 33: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

33

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 34: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

34

3.1.2 Gauß-Seidel-Verfahren

• Zerlegung der Matrix A anlog zum Jacobi-Verfahren, A=D-L-R (D,L,R Rnn)

• Iterationsschritt: (D-L)x(k+1)=Rx(k)+b.

• in Komponentenschreibweise

n,1,i, 1 1

1

)(

1

)1()1(

i

j

kj

n

ijij

kjiji

ii

ki xaxab

ax

Page 35: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

35

3.1.2 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

n,1,i, 1 1

1

)(

1

)1()1(

i

j

kj

n

ijij

kjiji

ii

ki xaxab

ax

Page 36: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

36

3.1.2 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

xi,j= (xi-1,j + xi+1,j + xi,j-i + x i,j+1) / 4

• Bsp. Temperaturverlauf im Wasserbad

Page 37: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

37

3.1.2 Gauß-Seidel-Verfahren

xxx

xxxx

xxx

xxx

xxxx

xxxxx

xxxxx

xxxx

xxxx

xxxxx

xxxxx

xxxx

xxx

xxxx

xxxx

xxx

• Für n = 16 Punkte ergibt sich folgendes Gitter und Matrix A

1

5

9

2

6

10

13 14

3

7

11

15

4

8

12

16

Page 38: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

38

1

5

9

2

6

10

13 14

3

7

11

15

4

8

12

16

3.1.2 Gauß-Seidel-Verfahren

• Rote-Schwarz-Anordnung : 1

5

3

7

2

6

4

8

1

11

5

9

3

13

15 7

2

12

6

16

10

4

14

8

– rot Punkt nur schwarze Nachbarn und umgekehrt

– Die Rote von 1,...,nS, numerieren

– die Schwarze von nS+1,... ,nR+nS numerieren (nR+nS=n)

xxxx

xxx

xxxx

xxxxx

xxxx

xxxx

xxx

xxxx

xxx

xxxx

xxxxx

xxxx

xxxx

xxxxx

xxxx

xxx

S

R

D0

0DD

0E-

00L

00

F-0R

• neue Matrix  (Permutation von A)

• Die Zerlegung von  in  =D-L-R (D,L,R Rnn) mit

Page 39: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

39

3.1.2 Gauß-Seidel-Verfahren

• Iterationsschritt:

1)(kR2

1)(kSS

(k)S1

1)(kRR

ˆD

FˆD

xEbx

xbx

R)(

)1(,

,

)1(

S)(

)()1(

n, 1,...i , ˆˆ

1

,n, 1,...i , ˆˆ1

n

iNjj

kRjnini

ninii

kS

iNjj

kSiji

iii

kR

xaba

x

xaba

x

ss

ss

• in Komponentenschreibweise:

2

1

S

R

S

R

ˆ

ˆ

x

ˆ.

DE

FDˆA

b

bxx

Page 40: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

40

3.1.2 Gauß-Seidel-Verfahren

• maximal p=nr (bzw. p=ns) Prozessoren

• Aufteilung anhand des Gitters vorgenommen

– wird Pj Gitterpunkt i zugeordnet, dann Pj für Berechnung der

Approximationen von xi zuständig

– Aufteilung z.B. zeilenblockweise

– bei p Prozessoren erhält jeder Prozessor n / p Gitterzeilen (½(n / p) rote und schwarze Punkte)

parallel Implementierung:

Page 41: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

41

3.1.2 Gauß-Seidel-Verfahren

• wähle beliebigen Startvektor

• Prozessoren iterieren folgende Schritte bis der Test auf Abbruch erfolgreich

1. Pi sendet seine lokal Elemente von xS(k) an alle anderen

Prozessoren (All-to-All Broadcast)

2. Pi berechnet die neue Approximation xR(k+1) für seine Elemente

von xR(k)

3. Pi sendet seine Elemente von xR(k+1) an alle anderen

Prozessoren (All-to-All Broadcast)

4. Pi berechnet die neue Approximation xS(k+1) für seine Elemente

von xS(k)

5. Test auf Abbruch

Page 42: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

42

3.1.2 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:

Page 43: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

43

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 44: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

44

3.2 Methode der konjugierten Gradienten

• Voraussetzung: Matrix ARnn positiv definit und symmetrisch

• Lösung x* des Gleichungssystems entspricht dem Minimum der Funktion:

xbAxxxf TT 2

1)(

• f(x) ist konvex und besitzt eindeutiges Minimum x*

Page 45: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

45

3.2 Methode der konjugierten Gradienten

• Iterationsschritt:)()()1( )( kkk pkxx

(k) Schrittweite , p(k) Richtungsänderung

– Notwendige Bedingung, mit r = Ax-b :

App

rp

App

bAxpbAxpApp

da

pxdfT

T

T

TTT

)(

0)()(

min

– Hinreichende Bedingung:

0)(

2

2

Appda

pxdf T

• Bestimmung von (k) bei bekanntem p(k) :

immer erfüllt !

)((min))(( )()()( kkR

k pxfpkxf

Page 46: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

46

3.2 Methode der konjugierten Gradienten

• Wahl des Richtungsvektors p(k) :– die Richtungsvektoren p(k) sind so zu wählen, dass sie konjugierte

Basis des Rn bzgl. A bilden:

• Zwei Vektoren p,q Rn sind bzgl. einer symmetrischen, nicht singulären Matrix A konjugiert falls gilt qTAp=0.

• Ist A positiv definit so bilden die linear unabhängigen Vektoren p1,...,pn, mit pi 0, i=1,...,n und (pi)TApj=0 für alle i,j

eine konjugierte Basis des Rn bzgl. A. – Falls die Richtungsvektoren eine konjugierte Basis des Rn bzgl. A

bilden, dann liegt die exakte Lösung nach maximal n Schritten vor.

Page 47: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

47

3.2 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) + kp(k)

4. r(k+1) =r(k) + kq(k)

5. k= [(r(k+1))T r(k+1)]/ [(r(k))T r(k)]

6. p(k+1) =-r(k+1)+ kp(k)

7. k++

Basisoperationen:

Matrix-Vektor-Multiplikation

ein inneres Produkt

eine Vektor-Addition

eine Vektor-Addition

ein inneres Produkt

eine Vektor-Addition

Page 48: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

48

3.2 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

p

nTsaxpy

p

p

nTip log

)()(2

p

nnn

p

np

p

nTMVM

Page 49: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

49

3.2 Methode der konjugierten Gradienten

Rechenaufwand:

pnp

n

p

n

p

np

p

n

p

nnTTTT saxpyipMVMCG

log5

3log232

2

2

Page 50: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

50

Gliederung

1. Einleitung

2. Direkte Verfahren

2.1 Gauß-Elimination

2.2 zyklische Reduktion

3. Iterative Verfahren

3.2 Methode der konjugierte Gradienten

3.1.2 Gauß-Seidel-Verfahren

3.1.1 Jacobi-Verfahren

3.1 klassische iterative Verfahren

4. Zusammenfassung

Page 51: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

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

Page 52: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

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

Page 53: Lösung linearer Gleichungssysteme Seminar Parallele Programmierung Nico Ziborius

53

Vielen Dank für die Aufmerksamkeit!