• Aucun résultat trouvé

Les performances réelles des évaluations des expressions permettent de relativiser les pertes de performances dues à la recherche de compromis entre performance et précision. En effet, même si sur machine idéale, les performances ont été réduites, il s’avère qu’en pratique les limitations matérielles permettent de les compenser en partie, voir complè- tement. Ceci est illustré à la figure4.4par l’exemple de deux expressions sommant diffé- remment 10 termes. L’une, complètement parallèle mais ne garantissant pas la précision maximale, a une latence idéale de dl og2(n −1)e = 4 opérations flottantes. Supposons que la machine sur laquelle cette expression est évaluée dispose uniquement de deux unités de calcul capables d’effectuer des opérations en parallèle. Il faut à cette machine«limitée»5 cycles pour exécuter cette première expression (figure4.4(a)). L’autre, a une latence légère- ment réduite (dl og2(n − 1)e + 1 = 5 opérations flottantes) sur machine idéale mais a besoin de 5 cycles pour s’exécuter sur notre machine hypothétique (comme le montre la figure

4.4(b)). Cette expression présente cependant une précision optimale. Sur cette machine réelle, le compromis entre performance et précision a comme seule influence de produire une meilleure précision sans avoir de conséquences sur les performances.

0 1 2 3 4 5 6 + + + + + + + + + a b c d e f g h i j

(a) Exemple d’expression présentant un parallélisme maximal (latence de dl og2(n − 1)e = 4 opérations sur ma-

chine idéale) et une précision non- optimale. 0 1 2 3 4 5 6 + + + + + + + + + a b c d e f g h i j

(b) Exemple d’expression présentant un niveau de parallélisme réduit (la- tence de dl og2(n − 1)e + 1 = 5 opéra-

tions sur machine idéale) ) et une pré- cision maximale.

FIGURE4.4 – Graphe de flot de données d’expressions de 10 termes avec un parallélisme limité à 2

C

H A P I T R E

5

AMÉLIORATION AUTOMATIQUE

DE L A PRÉCISION

5.1 Introduction

A

MÉLIORER automatiquement la précision d’algorithmes numériques consiste à mi-

nimiser ou à supprimer les erreurs d’approximations survenant lors des calculs. Il existe différentes méthodes automatiques permettant d’améliorer la précision. Les expansions, et avec elles, l’arithmétique double-double en sont un bon exemple. Elles per- mettent de générer rapidement des algorithmes disposant de k fois plus de précision (k étant la taille des expansions). Néanmoins, comme nous l’avons vu au chapitre2, cette mé- thode est coûteuse en temps de calcul et affecte les performances. Il existe cependant des méthodes prenant en compte les performances finales d’un algorithme, tout en répondant à des critères plus stricts au niveau de la précision numérique. Ces méthodes sont souvent implémentées via des outils de compilation ou de synthèse de code. Citons l’outil CGPE

qui permet une génération de code rapide et précis pour des évaluations polynomiales en arithmétique fixe [MR11]. Très récemment, C. RUBIO-GONZÀLEYet al.1ont mis au point un outil, PRECIMONIUS, permettant d’améliorer automatiquement la précision de calculs en arithmétique flottante. Cet outil est intégré dans l’infrastructure de compilation LLVM.

Leur méthode se base sur une technique de delta-debugging et permet de sélectionner la précision minimale dont a besoin une variable flottante pour être représentée précisément

1J. DEMMEL, W. KAHANet D. BAILEYétant reconnus pour leurs contributions de longue date dans ce

domaine font partie des auteurs de ces travaux

(float, double ou long double en C) [RGNN+13]. En réduisant la taille de la représentation des nombres flottants, cette méthode permet d’améliorer la précision et les performances. Dans le futur, cette méthode pourrait prendre en compte d’autres moyens d’améliorer la précision, comme l’utilisation des compensations que nous allons décrire dans ce cha- pitre.

Nous proposons ici d’améliorer la précision numérique d’un calcul en compensant au- tomatiquement les opérations élémentaires qui le composent [LMT12]. Cette approche consiste à calculer l’erreur induite par chaque opération élémentaire d’un calcul afin d’en compenser le résultat. Nous traiterons ici des opérations +, − et × entre opérandes flot- tantes. Les opérations ÷ et p ne seront pas étudiées ici, mais quelques pistes seront néan- moins évoquées à la section5.2.3.

Le principe de cette automatisation, est d’ajouter pour chaque opération élémentaire, un calcul d’erreur. Cette erreur est composée d’une part par l’erreur engendrée par l’opé- ration elle-même, et, d’autre part, par l’héritage des erreurs entachant les opérandes. Par exemple, l’erreur de ˆa ◦ ˆb avec ◦ ∈ {+,−,×} sera calculée en fonction de l’erreur de l’opé-

ration, notéeδˆ◦, et des erreurs entachant les opérandes notéesδaˆ etδbˆ. Lors d’une suite d’opérations élémentaires, les erreurs calculées pour chacune d’entre elles, sont accumu- lées pour ensuite être appliquées au résultat final. Cette dernière opération correspond à la phase de compensation du résultat final du calcul avec l’erreur totale ainsi calculée.

5.1.1 Notations

Définissons le format des nombres que manipule notre approche. Dans le cadre de la com- pensation automatique, un nombre flottant ˆx se verra entaché de diverses erreurs, soit

générées, soient héritées, lors des calculs du programme. L’accumulation de toutes les er- reurs entachant le nombre ˆx, sera notéeδxˆ∈ F. Le nombre flottant δxˆest une approxima- tion de l’erreur commise par l’opération élémentaire ayant produit ˆx, plus une certaine

fonction des erreurs héritées par les opérandes de cette opération. Le calcul deδxˆest dé- taillé à la section5.2.2pour la somme et le produit.

Le couple ( ˆx, δxˆ) est alors appelé nombre auto-comp2. Le nombre auto-comp repré- sente le nombre flottant ˆx ayant bénéficié du processus de compensation automatique

(détaillé dans la section suivante). La notation utilisée pour décrire un tel nombre suit la relation (5.1).

( ˆx, δxˆ) = [x] (5.1)

On appelle ˆx,δxˆles composantes de [x].

5.2. AUTOMATISATION DE LA COMPENSATION 65

Ce format prend alors en compte les erreurs d’approximation entachant les nombres flottants et permet, au fur et à mesure des calculs, de représenter la somme des erreurs héritées par les opérandes, et celles engendrées lors des diverses opérations flottantes.

Le format des nombres auto-comp est inspiré du format double-double mais ne prend pas en compte toutes leurs caractéristiques. Le format auto-comp permet la représentation des nombres jusqu’à deux fois plus de précision, mais à l’inverse des double-double, les composantes des auto-comp peuvent se chevaucher. De plus, nous constaterons que dans le cadre des algorithmes linéaires, la compensation automatique garantit un résultat final deux fois plus précis. En effet, toutes les erreurs du premier ordre sont corrigées par la compensation.

Nous verrons dans ce chapitre (et le suivant), le niveau d’approximation queδxˆ per- met d’obtenir. De la correction de toutes les erreurs du premier ordre dans le cas de l’ap- plication complète de la compensation, à une correction incomplète lors de l’application partielle des compensations en vue de compromis avec les performances (voir chapitre6).

Documents relatifs