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
prenom.nom@ens-lyon.fr
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 en-
core lors de la mise au point de méthodes combinant à la fois des algorithmes symbo-
liques 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 bi-
bliothè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 CPU-
GPU. 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 bxà un
système dense Ax =bà coefficient flottants, et une borne garantie sur l’erreur kbx−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 algo-
rithmes 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 nu-
mé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