Implantation performante d`un algorithme vérifié de résolution de

publicité
Implantation performante d’un algorithme vérifié de
résolution de systèmes linéaires
Nicolas Louvet et Nathalie Revol
Laboratoire LIP, Ecole Normale Supérieure de Lyon
46 Allée d’Italie, 69364 Lyon Cédex 07
[email protected]
Le domaine de recherche du projet Arénaire – projet du laboratoire LIP, dans lequel
s’effectuera le stage – est l’arithmétique des ordinateurs. Il s’agit ici de contribuer au
développement de calculs fiables en algèbre linéaire numérique, en utilisant diverses
approches : arithmétique en virgule flottante et arithmétique par intervalles.
1
Contexte
Dans certaines applications, typiquement en automatique ou en robotique, ou encore lors de la mise au point de méthodes combinant à la fois des algorithmes symboliques et des algorithmes numériques, il est nécessaire d’obtenir une certitude quant à
la précision du résultat d’un calcul matriciel effectué en arithmétique flottante. Des bibliothèques pour les calculs matriciels sont sans cesse optimisées afin d’approcher les
performances crêtes des machines [1,3] : LAPACK par exemple, mais aussi des projets
plus récents PLASMA et MAGMA sur les architectures multicœurs et hybrides CPUGPU. Ces bibliothèques sont largement utilisées, mais ne fournissent qu’une estimation
(parfois pessimiste, parfois erronée) de la précision de la solution calculée [1,3].
Le but des méthodes de vérification en arithmétique flottante [7] est de mettre au
point des algorithmes permettant de borner la précision du résultat, tout en assurant de
bonnes performances lors de leur implantation en machine. De nombreuses méthodes
sont basées sur l’utilisation de l’arithmétique d’intervalles, qui fournit un encadrement
de chacun des calculs intermédiaires ; les propriétés de l’arithmétique IEEE-754 sont
également souvent exploitées directement afin d’améliorer les performances.
2
Sujet
La problématique est celle de l’implantation performante d’un algorithme vérifié
de résolution de systèmes linéaires, calculant à la fois une solution approchée x
b à un
système dense Ax = b à coefficient flottants, et une borne garantie sur l’erreur kb
x − xk
entachant cette solution approchée.
Le stagiaire devra tout d’abord se familiariser avec les différentes approches connues
dans la littérature pour résoudre ce type de problème : méthodes de points fixes et algorithmes de vérification rapides [4,5,6]. Nous définirons ensuite un algorithme visant à
obtenir de bonnes performances sur les machines multicœurs récentes, en tirant partie
notamment des possibilités des approches combinant à la fois les calculs en double et
en simple précision (approches à précision mixte [2]). L’implantation de cet algorithme
devra être effectuée en C/C++, en se basant sur les briques de base fournies par les
bibliothèques BLAS performantes (notamment la MKL d’Intel). Des expériences numériques seront mises en œuvre, afin de mettre en évidence les propriétés numériques
de l’algorithme implanté : propriétés de convergence, comportement face au mauvais
conditionnement. Ces propriétés numériques feront l’objet d’une étude théorique détaillée.
1
3
Quelques références
[1] J. W. Demmel. Applied Numerical Linear Algebra, SIAM, 1997.
[2] J. W. Demmel, Y. Hida, W. Kahan, X. S. Li, S. Mukherjee, and E. J. Riedy.
Error bounds from extra-precise iterative refinement. ACM Transactions on Mathematical Software, 2006.
[3] N. J. Higham. Accuracy and Stability of Numerical Algorithms (second edition), SIAM, 2002.
[4] H. D. Nguyen and N. Revol. Solving and Certifying the Solution of a Linear
System, Reliable Computing, 2011.
[5] S. Oishi and S.M. Rump. Fast verification of solutions of matrix equations.
Numerische Mathematik, 2002.
[6] K. Ozaki, T. Ogita, S. Oishi. An Algorithm for Automatically Selecting a Suitable Verification Method for Linear Systems, Numerical Algorithms, 2011.
[7] S. M. Rump. Verification methods : Rigorous results using floating-point arithmetic. Acta Numerica, 2010.
2
Téléchargement