• Aucun résultat trouvé

3.2 GMRES

3.2.1 Description de l’algorithme

L’algorithme GMRES a été introduit par Saad et Schultz [137]. Il se base sur la minimisation du résidu au sens des moindres carrés sur l’espace de Krylov orthonormalisé via une méthode d’Arnoldi.

Méthode d’Arnoldi et espace de Krylov

On appelle espace de Krylov Km(A, r) l’espace vectoriel engendré par les

itérés successifs du vecteur r par la matrice A jusqu’à la puissance m − 1 [135].

Km(A, r) = vect

n

r, Ar, A2r, . . . , Am−1ro (3.1) C’est dans cet espace que l’algorithme GMRES va chercher une solution approchée au système linéaire Ax = b pour r = b − Ax0, où x0 est le point

de départ de la méthode itérative. La solution approchée x0 est toujours

choisie comme étant le vecteur nul, de sorte que le résidu initial est égal au second membre.

On cherche une base orthonormée de cet espace de Krylov, que l’on obtient par une simple procédure d’orthonormalisation d’Arnoldi, présentée dans l’algorithme 1.

Algorithme 1 Méthode d’Arnoldi pour Km(A, r)

1: v1 ← r/krk 2: for j= 1,m do 3: wj ← Avj 4: for i= 1,j do 5: hij = (wj, vi) 6: end for 7: wj ← wj −Pji=1hijvi 8: hj+1,j← kwjk 9: vj+1← wj/hj+1,j 10: end for

On note Hk la matrice d’Hessenberg de taille (k + 1) × k composée

des coefficients (hij). C’est la matrice créée après k étapes de la méthode

d’Arnoldi. On note également Hk la matrice de taille k × k composée des

mêmes coefficients. La matrice Hk a une ligne de plus de que Hk, composée

uniquement de zéros et d’un seul terme non nul hk+1,k. On remarque que

Hk est triangulaire supérieure plus une diagonale inférieure.

Notons Vk+1 la matrice colonne de vecteurs (vj)j=1,k+1 formés après

k étapes de la méthode d’Arnoldi. Alors, la relation fondamentale de la

méthode d’Arnoldi s’écrit

AVk= Vk+1Hk (3.2)

La démonstration se fait simplement en remarquant que

wj = Avjj X i=1 hijvi= hj+1,jvj+1 (3.3) On obtient alors Avj = j+1 X i=1 hijvi (3.4)

La relation d’Arnoldi est intéressante car elle montre que l’action de la matrice A de grande taille sur les vecteurs vi peut se réduire à celle d’une

matrice Hk beaucoup plus petite. Les tailles classiques d’espace de Krylov

sont de l’ordre de la centaine, à comparer avec la matrice A dont l’ordre est de plusieurs dizaines de millions dans notre cas. La matrice Hkcondense donc

l’information de la matrice que l’on a pu observer après k multiplications de vecteurs par celle-ci. Enfin, notons que la matrice d’Hessenberg Hk peut se

calculer uniquement à l’aide de A et de Vk :

VTkAVk= Hk (3.5)

En effet, en partant de la relation d’Arnoldi (3.2), et en notant Ik la

matrice identité, VTkAVk= VTkVk+1Hk =    Ik 0 ... 0   Hk = Hk

Méthode d’Arnoldi modifiée

La méthode d’Arnoldi précédemment introduite effectue en une seule fois la projection du nouveau vecteur wj sur l’espace orthogonal à l’hyperplan de

base Vj. On peut montrer [135] [63, sec. 5.2.8] qu’en arithmétique inexacte,

cette méthode est sensible aux erreurs numériques qui peuvent conduire à une perte d’orthogonalité entre les vecteurs. La forme modifiée de la méthode d’Arnoldi, qui effectue la projection sur l’orthogonal de chacun des vecteurs de la base Vj à la suite, est plus robuste aux erreurs numériques. Cela donne

l’algorithme 2.

Algorithme 2 Méthode d’Arnoldi modifiée

1: v1 ← r/krk 2: for j= 1,m do 3: wj ← Avj 4: for i= 1,j do 5: hij = (wj, vi) 6: wj ← wj− hijvi 7: end for 8: hj+1,j← kwjk 9: vj+1← wj/hj+1,j 10: end for

Pour encore améliorer la précision de la méthode, on peut effectuer une deuxième passe d’orthonormalisation après la première [135]. Enfin, une dernière méthode d’orthonormalisation d’une famille de vecteurs est basée sur les réflexions d’Householder, et est encore plus précise en arithmétique inexacte que la méthode d’Arnoldi, au prix d’un coût de calcul plus élevé [63].

L’algorithme GMRES

L’algorithme GMRES consiste en la minimisation, au sens des moindres carrés, du résidu r = Ax − b, sur l’espace de Krylov Km(A, r0). Une com-

binaison linéaire des vecteurs de la base de Krylov est recherchée. On note ym ∈ Rm ses coordonnées. La solution xm est de la forme

xm = x0+ Vmym (3.6)

Le résidu final s’exprime

rm = b − Axm= b − AVmym (3.7)

Si l’on prend comme solution initiale x0= 0, alors le résidu initial r0 qui

sert à construire l’espace de Krylov vaut r0= b. Dans la méthode d’Arnoldi

(algorithmes 1 et 2), le vecteur initial v1 = r0 est normalisé. Notons alors β

la norme du résidu initial r0. À l’aide de la relation d’Arnoldi (3.2) et des

notations introduites précédemment, on obtient

rm = b − Axm = r0− AVmym = βv1− Vm+1Hmym = Vm+1  βe1− Hmym  (3.8) où e1 est le premier vecteur de la base canonique de Rm. On obtient la

relation entre le résidu complet et celui dans la base réduite : krmk2 = βe1− Hmym 2 (3.9)

En effet, la base Vm+1 est orthonormale, donc elle ne change pas la

norme l2 d’un vecteur. La minimisation du résidu rm revient à un simple

problème de moindres carrés de taille (m + 1) × m : min ym∈Rm βe1− Hmym 2 (3.10)

Ce système peut facilement être résolu : la matrice Hm est de type

Cette matrice peut est rendue triangulaire supérieure à l’aide de m rotations de Givens notées (Ωi). Les rotations de Givens, qui servent à annuler un

terme dans une matrice, sont décrites par exemple dans [63]. La rotation i annule le terme hi+1,i de Hm. Les matrices de rotation de Givens sont

orthonormales, donc ne changent pas la norme du problème de minimisation. Notons Qi=Q1j=ii la transformation totale, produit des rotations. Alors

QmHm = Rm =

Rm 0 . . . 0

!

(3.11) où Rm est une matrice triangulaire supérieure de taille m × m. La même

transformation appliquée au second membre βe1du problème de minimisation

donne un vecteur gm+1 de coordonnées (γi) :

Qmβe1 = gm+1 =       γ1 ... γm γm+1       = gm γm+1 ! (3.12)

Le problème de minimisation devient

min ym∈Rm βe1− Hmym 2= gm+1− Rmym 2 = gm γm+1 ! − Rm 0 . . . 0 ! ym 2 = gm γm+1 ! − Rmym 0 ! 2 (3.13) La matrice Rm est triangulaire supérieure, et est inversible (sauf si la

méthode a atteint la solution exacte, voir la notion de lucky breakdown dans [135]). Par une méthode de remontée triangulaire [63], on obtient les coordonnées de la solution

ym = Rm−1gm (3.14)

La norme du résidu vaut exactement krmk2 = min ym∈Rm βe1− Hmym 2 = |γm+1| (3.15)

Le résultat de (3.15) est particulièrement intéressant. Il montre que la valeur du problème de minimisation peut être trouvée sans résoudre ce problème. La transformation successive du second membre βe1 par les

rotations de Givens donne, en dernière coordonnée, la valeur du résidu à l’itération GMRES courante, sans avoir à calculer la solution yk= R−1k gk.

résidu r et solution x ne sont pas mis à jour avant d’avoir atteint le seuil de convergence souhaité ou un point de redémarrage.

L’algorithme 3 présente cette version du GMRES avec m itérations. Si, à la fin des ces itérations, la tolérance sur la norme du résidu n’est pas atteinte, l’algorithme est redémarré en prenant comme nouveau point de départ la solution approchée obtenue à la fin des itérations. Cela consiste à recommencer l’algorithme 3 en remplaçant les deux premières lignes par x0 ← xm et r0 ← rm. L’algorithme peut s’arrêter avant d’avoir effectué les

m itérations si la norme du résidu est plus petite que la taille demandée. De

plus, le vecteur nul est pris comme point de départ de la méthode itérative. Le résidu initial est donc égal au second membre du système linéaire. Algorithme 3 GMRES(m) avec redémarrage

1: x0 ← 0 2: r0 ← b 3: β ← kr0k 4: v1 ← r0 5: g ← βe1 6: for j= 1,m do 7: wj ← Avj 8: for i= 1,j do 9: hij = (wj, vi) 10: wj ← wj− hijvi 11: end for 12: hj+1,j← kwjk 13: vj+1← wj/hj+1,j

14: Calcul de la rotation de Givens Ωj annulant hj+1,j 15: Application des rotations de Givens Ω1, . . . , Ωj sur H

16: g ← Ωjg

17: If |gj+1| ≤ ε exit loop

18: end for

19: ym ← H−1g

20: Application des rotations de Givens inverses Ω−1m , . . . , Ω1,−1 à ym

21: xm ← x0+ Vmym

22: rm ← b − Axm

3.2.2 Parallélisation

Comme expliqué dans le paragraphe 2.4, les maillages utilisés par Dassault Aviation sont trop volumineux pour que les calculs soient effectués sur un seul processeur. Les données sont donc distribuées sur plusieurs processeurs.

L’algorithme GMRES est très facilement parallélisable. Les données distribuées sont la matrice A et les vecteurs de même taille tels que la base Vm

de l’espace de Krylov. Les produits matrice-vecteur sont parallélisés comme indiqué dans le paragraphe 2.4. L’autre opération parallèle est les produits scalaires pour la méthode d’Arnoldi d’orthonormalisation. La parallélisation de cette opération est triviale : les produits scalaires partiels sont effectués par processeur, puis ils sont sommés sur l’ensemble des processeurs. Une attention particulière est à porter aux nœuds d’interface, qui sont dupliqués, et dont la contribution doit être réduite d’autant (voir paragraphe 2.4).