• Aucun résultat trouvé

Utilisation de la routine ”dtrsm” des blas

2.4 Conclusion

3.1.2 Utilisation de la routine ”dtrsm” des blas

L’utilisation des routines num´eriquesblas a permis de r´eduire consid´erablement les temps de calcul pour la multiplication de matrices sur les corps finis [28, 66]. L’id´ee consiste `a convertir les matrices dans un format flottant double pr´ecision, calculer la multiplication avec lesblas et convertir le r´esultat dans la repr´esentation des ´el´ements du corps fini. Cette m´ethode est possible du fait que la valeur maximale des donn´ees intervenant dans le calcul est lin´eaire en fonction de la dimension des matrices. Pour des matrices d’ordren sur Zp et des nombres flottants double pr´ecision, l’utilisation des blas est possible si l’´equation suivante est satisfaite [28] :

n(p−1)2<253.

Notre id´ee consiste `a utiliser la mˆeme approche pour la r´esolution de syst`emes lin´eaires triangulaires matriciels. Cependant, l’utilisation directe des r´esolutions num´eriques est moins

´

evidente. Premi`erement, la valeur maximale des donn´ees durant le calcul est exponentielle en la dimension du syst`eme. Deuxi`emement, la solution du syst`eme est une solution rationnelle.

Du fait de la taille des valeurs calcul´ees, l’utilisation directe des blas est ici impossible.

Par exemple, le r´esultat entier d’un syst`eme d’ordre 100 `a coefficients entiers inf´erieurs `a 1009 poss`ede de l’ordre de 1000 bits. Afin de pouvoir utiliser les routines de r´esolution des blas, nous utilisons la r´ecursivit´e de l’algorithme ULeft-Trsm pour faire diminuer la dimension des syst`emes jusqu’`a ce qu’ils soient suffisamment petits pour ˆetre r´esolus num´eriquement. Pour g´erer les solutions rationnelles, nous d´ecomposons le syst`eme de telle sorte que la solution rationnelle est un d´enominateur ´egal `a 1. Ainsi, cela nous permet d’´eviter d’avoir une approximation du r´esultat.

Nous ´etudions dans un premier temps une borne sur la croissance des coefficients des r´ e-sultats entiers nous permettant d’utiliser au maximum les routines de r´esolution num´erique des blas(i.e.dtrsmen double pr´ecision etstrsmen simple pr´ecision) `a la place des derniers niveaux r´ecursifs de l’algorithme ULeft-Trsm.

3.1.2.a Croissance des coefficients

La k-i`eme composante de la solution d’un syst`eme triangulaire d’ordre n ´etant une combi-naison lin´eaire desn−kcomposantes suivantes, on peut donc majorer la valeur maximale de la solution en fonction de la dimension du syst`eme et de la taille des entr´ees initiales. Il suffit donc de trouver la largeur maximale de blocs pour laquelle l’appel de la fonction dtrsm retournera un r´esultat exact. Ainsi en utilisant l’algorithme r´ecursif par blocs et en rempla¸cant les derniers niveaux d’appel r´ecursif par des appels `a la fonction dtrsm on b´en´eficie au maximum des per-formances des blas. Dans la suite, nous d´efinissons pour une matrice M = [mij] ∈ Zm×n ou un vecteur v = [vi] ∈ Zn, les fonctions de magnitude |M| et |v| telles que |M|= maxij(|mij|) et|v|= maxi(|vi|). Nous d´efinissons aussi la notion de matrice triangulaire unitaire pour parler des matrices triangulaires poss´edant uniquement des ”1” sur la diagonale.

Lemme 3.1.2. SoientU ∈Zn×n une matrice triangulaire unitaire etb∈Zn tels que|T|,|b|< p et p > 1. Soit x = [x1, . . . , xn]T ∈ Zn la solution enti`ere du syst`eme T x = b. Alors pour tout k∈ {0, . . . , n−1},

(p−2)k−pk≤2xp−1n−k ≤pk+ (p−2)k si k est pair

−pk−(p−2)k≤2xp−1n−k ≤pk−(p−2)k si k est impair

La preuve de ce th´eor`eme se fait `a partir d’une induction sur les d´ependances des xi, en s’appuyant sur la relation xk = bk −Pn

i=k+1Tkixi. La preuve compl`ete de ce th´eor`eme est propos´ee en annexe de [30].

Th´eor`eme 3.1.3. La borne |x| ≤ p−12 (pn−1−(p−2)n−1) est la meilleure possible.

Preuve. Consid´erons les s´eries{uk}k≥1 et{vk}k≥1 d´efinies par les bornes du th´eor`eme 3.1.2 : uk = p−1

2

pk−(p−2)k , vk = p−1

2

pk+ (p−2)k

.

3.1. Syst`emes lin´eaires triangulaires 73 Consid´erons le syst`emeT x=b suivant

T =

A partir de cette borne, on peut donc d´` eterminer la taille maximale des syst`emes pouvant ˆetre r´esolus `a partir des routinesblas. Pour un syst`eme den´equations et un corps de cardinalit´e p, il suffit que l’´equation suivante soit v´erifi´ee :

p−1

2 pn−1+ (p−2)n−1

<2s (3.1)

Ici,srepr´esente la pr´ecision autoris´ee par les nombres flottants pour repr´esenter des entiers. Par exemple, les nombres flottants double pr´ecision permettent une pr´ecision de 53 bits (voir§2.2.5), ce qui donne au plus des matrices 55×55 pour p= 2 et 4×4 pour p = 9739. Bien que cette borne limite l’utilisation desblas, nous verrons dans la section 3.1.4 que cette technique permet d’acc´el´erer le temps de calcul par rapport `a la version purement r´ecursive.

N´eanmoins, on peut pratiquement doubler la borne d´efinie par l’´equation (3.1) en utilisant une repr´esentation centr´ee des ´el´ements du corps finis (i.e. −p−12 ≤x≤ p−12 ). Ainsi, on obtient

et on peut atteindre par exemple des matrices 93×93 pour p= 2.

3.1.2.b Gestion des divisions

Nous nous int´eressons maintenant `a ´eliminer les calculs approch´ees que peut entraˆıner la r´esolution num´erique. En particulier, cette approximation provient du fait que la solution exacte du syst`eme est un nombre rationnel o`u le d´enominateur est ´egal au d´eterminant de la matrice (r`egles de Cramer [36, th´eor`eme 25.6, page 706]). Le d´eterminant d’une matrice triangulaire

´etant ´egal au produit des ´el´ements diagonaux, les divisions n’apparaisent que dans le dernier niveau r´ecursif de l’algorithme ULeft-Trsm(i.e. A−111 ×B). On ne peut pr´edire si le r´esultat de ces divisions sera exacte ou non, cela d´epend totalement du second membre B. Toutefois, si le syst`eme provient d’une matrice triangulaire unitaire alors ces divisions sont exactes (division par 1). L’id´ee est donc de transformer le syst`eme initial en un syst`eme unitaire de telle sorte que chaque appel r´ecursif dans l’algorithmeULeft-Trsm soit unitaire. Soit le syst`emeAX =B, si DA =U, o`u D est une matrice diagonale et U est une matrice triangulaire unitaire. Alors, la r´esolution du syst`eme U Y =DB assure qu’aucune division n’est effectu´ee, et la solution du syst`eme inital est ´egale `a Y. Pour d´eterminer un tel syst`eme, il faut donc calculer la matrice D qui correspond `a l’inverse de la diagonale de A dans le corps fini et multiplier B par D. Le nombre d’op´erations n´ecessaires pour r´ealiser cela est de :

• minversions dans Zp pour calculer D.

• (m−1)m2 +mnmultiplications dans Zp pour calculer normaliser U etX.

Cependant, l’´elimination des divisions n’est n´ecessaire que pour les r´esolutions `a partir de la routine num´erique dtrsm. On peut donc retarder l’utilisation des syst`emes unitaires tant que l’on ne r´esout pas le syst`eme de fa¸con num´erique. Soitβla taille maximale des syst`emes pouvant ˆ

etre r´esolus num´eriquement. Afin d’´evaluer le coˆut relatif du calcul des syst`emes unitaires, nous consid´erons que la dimension des matrices triangulaires est de l’ordre de m = 2iβ, o`u i le nombre d’appels r´ecursifs dans l’algorithmeULeft-Trsm. Dans ce cas pr´ecis, il y a 2i utilisations de syst`emes unitaires de dimensionβ. Le coˆut total pour utiliser ces syst`emes unitaires est donc de :

• minversions dans Zp.

• (β−1)m2 +mnmultiplications dans Zp.

Cette implantation nous permet donc d’´eviter 122i+11

m2 multiplications dans Zp par rapport au passage `a un syst`eme unitaire d`es le d´ebut. En utilisant un seul niveau r´ecursif, on

´

economise 14m2 multiplications alors que le gain maximum est de 12(m2−m) multiplications pour logmniveaux r´ecursifs.