• Aucun résultat trouvé

2.4 Conclusion

3.1.4 Comparaison des implantations

 x1

... xm

Si l’on effectue les produits matrice-vecteur avec une r´eduction modulaire retard´ee (une seule r´eduction apr`es le calcul entier) alors l’algorithme adhoc-ULeft-Trsm peut ˆetre utilis´e si le syst`eme v´erifie l’´equation suivante :

t(p−1)2 <2s (3.4)

o`ut d´efinit la dimension du syst`emes et srepr´esente la pr´ecision des calculs entiers.

Bien que la complexit´e de cet algorithme soit cubique en la taille des entr´ees, cela n’a pas d’incidence sur les performances en pratique, du fait que l’utilisation d’algorithmes de multi-plication de matrices rapides n’est pas int´eressante pour de petites matrices [28, §3.3.2]. Un param`etre important pour implanter cette m´ethode est de d´efinir `a partir de quelle dimension les syst`emes doivent ˆetre r´esolus par l’algorithme adhoc-ULeft-Trsm. L’id´ee est de tirer parti des performances intrins`eques des processeurs pour les op´erations d’addition et de multiplica-tion lorsque toutes les donn´ees tiennent dans les caches. Le choix de ce seuil est donc fortement reli´e `a la taille de la m´emoire cache disponible. Si l’on effectue le produit matrice-vecteur `a partir de produits scalaires, alors on peut esp´erer obtenir des performances quasi optimales pour certains processeurs [26]. La figure 3.1 tir´ee de [29] montre que pour des nombres premiers p suffisamment petits le produit scalaire d’ordre 512 par r´eduction moudlaire retard´ee s’av`erent ˆetre pratiquement au maximum des performances du processeur.

0 100 200 300 400 500 600 700 800 900

0 10000 20000 30000 40000 50000 60000

Speed (Mops)

Prime number

Dot product of a vector with 512 elements on a P3 993 MHz Classical double representation Overflow trick

Fig. 3.1 – Produit scalaire avec r´eduction modulaire paresseuse (P3-933Mhz)

3.1.4 Comparaison des implantations

Nous nous int´eressons maintenant `a comparer les diff´erentes variantes pour l’implantation de la r´esolution de syst`emes lin´eaires triangulaires. L’algorithmeULeft-Trsm ´etant uniquement

bas´e sur l’utilisation du produit de matrices, cela nous permet de tirer parti des performances des routines d´evelopp´ees par le projet fflas [28]. Nous comparons ici les diff´erentes implan-tations que nous venons de pr´esenter. Nous d´esignons ”pure rec” l’implantation de l’algorithme ULeft-Trsm uniquement `a partir de produit de matricesfflas. Ensuite nous d´esignons respec-tivement ”blas ” et ”delayed” les deux variantes de l’algorithme ULeft-Trsm en rempla¸cant les derniers niveaux r´ecursifs soit par des appels `a la routinesdtrsmdesblas soit par l’algorithme adhoc-ULeft-Trsm. Afin de comparer plusieurs seuils pour l’utilisation de l’algorithme adhoc-ULeft-Trsm, nous notons celui-ci par ”delayedt” o`u t v´erifie l’´equation (3.4) et sp´ecifie le seuil d’utilisation de l’agorithmeadhoc-ULeft-Trsm. Nous comparons nos implantations en utilisant deux corps premiers pr´esent´es dans la section 2.2 (i.e. Modular<double>, Givaro-Zpz<Std32>).

Nous utilisons une version desblas optimis´ee au travers du logiciel ATLAS32[90] version 3.4.2.

Nous testons ici des syst`emes triangulaires denses carr´es d’ordre n et nous exprimons les per-formances de nos routines en millions d’op´erations arithm´etiques sur un corps finis par seconde (Mops).

D’apr`es la table 3.1, on peut voir que la version totalement r´ecursive est toujours la moins performante. Cela s’explique par le fait que cette implantation effectue beaucoup plus de r´ educ-tion modulaire que les deux autres car elle utilise des multiplicaeduc-tions de matrices sur un corps fini jusqu’au dernier niveau r´ecursif.

Les meilleures performances sont obtenues pour l’implantation utilisant la r´esolution num´ e-rique ”blas ” et le type de corps finisModular<double>. En effet, cette repr´esentation de corps finis permet d’´eviter toutes les conversions entre les repr´esentations flottantes et les ´el´ements du corps. De plus, elle b´en´eficie des tr`es bonnes performances de la r´esolution num´erique desblas. Les routines blas sont ici appel´ees pour des syst`emes d’ordre n = 23 pour p = 5. Toutefois, lorsque la taille du corps fini est plus importante (i.e. p = 32749), la dimension des syst`emes descend `a n= 3 et l’utilisation de l’algorithme adhoc-ULeft-Trsm et de r´eductions modulaires retard´ees avec le seuil t= 50 se r´ev`ele plus efficace pour des syst`emes de dimension n <1000.

Cela s’explique par le bon comportement du produit scalaire avec les caches et par le fait qu’on effectue beaucoup moins de calculs sur les corps finis. Toutefois, le choix du seuiltdoit ˆetre assez pr´ecis pour permettre un gain par rapport `a la variante utilisant les blas. Afin de comparer exactement les variantes ”blas ” et ”delayed”, nous exprimons les performances pour des seuils identiques (i.e. 3, 23).

Dans la table 3.2, les performances obtenues par la variante ”blas ” ne sont pas toujours les meilleures. On remarque aussi que les performances obtenues sont globalement moins bonnes que celles obtenues avec le corpsModular<double> (table 3.1). En effet, l’utilisation principale du produit matriciel des fflas entraˆıne ici beaucoup de conversions de donn´ees entre le format flottant et les corps finis. Ces conversions deviennent d’ailleurs trop coˆuteuses d`es lors que le corps fini est grand. En effet, pour p = 32749 la version ”delayed50” est toujours la meilleure.

Lorsque le corps fini est petit, la variante ”blas ” s’av`ere plus performante pour des syst`emes ayant une dimension sup´erieure `a 2000.

Pour r´esumer, on pr´ef´erera utiliser l’implantation bas´ee sur la r´esolution de syst`emes num´ e-riques avec le corps finis Modular<double>la plupart du temps. Toutefois, si un type de corps finis est impos´e (`a base d’entiers) l’utilisation de la version ”delayed” peut se r´ev´eler la plus effi-cace si l’on utilise un seuil adapt´e au caract´eristique de l’architecture utilis´ee. L’utilisation d’un logiciel d’optimisation automatique, similaire `a ATLAS [90], pourrait permettre de d´eterminer un seuil optimal pour cette m´ethode en fonction d’une architecture d´etermin´ee.

32http ://math-atlas.sourceforge.net

3.1. Syst`emes lin´eaires triangulaires 77

Z/5Z

n 400 700 1000 2000 3000 5000

pure rec. 853 1216 1470 1891 2059 2184

blas 1306 1715 1851 2312 2549 2660 delayed100 1163 1417 1538 1869 2042 2137 delayed50 1163 1491 1639 1955 2067 2171 delayed23 1015 1465 1612 2010 2158 2186

delayed3 901 1261 1470 1937 2134 2166

Z/32749Z

n 400 700 1000 2000 3000 5000

pure rec. 810 1225 1449 1886 2037 2184

blas 1066 1504 1639 2099 2321 2378 delayed100 1142 1383 1538 1860 2019 2143 delayed50 1163 1517 1639 1955 2080 2172 delayed23 1015 1478 1612 2020 2146 2184

delayed3 914 1279 1449 1941 2139 2159

Tab. 3.1 – Performances (Mops) des routinesTrsm pour Modular<double>(P4-2.4Ghz)

Z/5Z

n 400 700 1000 2000 3000 5000

pure rec. 571 853 999 1500 1708 1960

blas 688 1039 1190 1684 1956 2245 delayed150 799 1113 909 1253 1658 2052 delayed100 831 1092 1265 1571 1669 2046

delayed23 646 991 1162 1584 1796 2086

delayed3 528 755 917 1369 1639 1903

Z/32749Z

n 400 700 1000 2000 3000 5000

pure rec. 551 786 1010 1454 1694 1929

blas 547 828 990 1449 1731 1984 delayed100 703 958 1162 1506 1570 1978 delayed50 842 1113 1282 1731 1890 2174

delayed23 653 952 1086 1556 1800 2054

delayed3 528 769 900 1367 1664 1911

Tab. 3.2 – Performances (Mops) des routinesTrsm pourGivaro-ZpZ (P4-2.4Ghz)