synth¨se de code avec compromis entre performance et pr©cision

106
Soutenance de thèse – 4 Juillet 2014 Université de Perpignan Via Domitia Synthèse de code avec compromis entre performance et précision en arithmétique flottante I EEE 754 Laurent THÉVENOUX Membres du jury : Philippe LANGLOIS et Matthieu MARTEL ................................... (directeurs) Jean-Marie CHESNEAUX et Sylvie PUTOT ................................ (rapporteurs) Jean-Michel MULLER ................................................... (examinateur) DALI Équipe-projet DALI, Univ. Perpignan Via Domitia. LIRMM, CNRS: UMR 5506 - Univ. Montpellier 2 L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 1/36

Upload: others

Post on 11-Sep-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Synth¨se de code avec compromis entre performance et pr©cision

Soutenance de thèse – 4 Juillet 2014Université de Perpignan Via Domitia

Synthèse de code avec compromisentre performance et précision

en arithmétique flottante IEEE 754

Laurent THÉVENOUX

Membres du jury :Philippe LANGLOIS et Matthieu MARTEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (directeurs)Jean-Marie CHESNEAUX et Sylvie PUTOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (rapporteurs)Jean-Michel MULLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (examinateur)

DA

LI

Équipe-projet DALI, Univ. Perpignan Via Domitia. LIRMM, CNRS: UMR 5506 - Univ. Montpellier 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 1/36

Page 2: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Deux des préoccupations majeures de l’informatique

Deux des préoccupations majeures de l’informatique

Précision

donnéesmodèlecalculs

Performance

taille du codeconsommation

vitesse/temps d’exécution

Critiques dans de nombreux systèmes

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 2/36

Page 3: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Deux des préoccupations majeures de l’informatique

Deux des préoccupations majeures de l’informatique

Précision

donnéesmodèlecalculs

Performance

taille du codeconsommation

vitesse/temps d’exécution

Critiques dans de nombreux systèmes

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 2/36

Page 4: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Deux des préoccupations majeures de l’informatique

Deux des préoccupations majeures de l’informatique

Précision

donnéesmodèlecalculs

Performance

taille du codeconsommation

vitesse/temps d’exécution

Critiques dans de nombreux systèmes

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 2/36

Page 5: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 6: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 7: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]

I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 8: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]

I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 9: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

librairies logicielles

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]

I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 10: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

librairies logicielles

réécritures

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 11: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

librairies logicielles

réécritures

binary64

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 12: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

librairies logicielles

réécritures

binary64

≈10

0 bits MPFR

algor

ithmes

compe

nsés

doub

le-do

uble

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 13: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Les relations entre le temps et la précision

Les relations entre le temps et la précision

temps de calcul

préc

isio

n

expansions

compensations

librairies logicielles

réécritures

binary64

≈10

0 bits MPFR

algor

ithmes

compe

nsés

doub

le-do

uble

Améliorer la précision

Motivation : certains résultats imprécis

I Ariane 5, Patriot

Précision étendue :

I expansions [She97, HBL01]I compensations [ROO05, GLL09]I librairies logicielles [MPFR]I réécritures [Iou13]

Distinguer le générique du spécifique

Précision arbitraire : doublement

I double-doubleI algorithmes compensés

Difficulté supplémentaire : le temps et laprécision ont tendance à s’opposer

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 3/36

Page 14: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Vue d’ensemble des travaux de la thèse

Vue d’ensemble des travaux de la thèse

Soit la problématique :

1. Améliorer la précision

2. En réduisant la dégradation de la performance

3. Avec de plus l’objectif : processus automatique

Aujourd’hui il est facile de doubler la précision presque automatiquement

Peut-on faire plus efficace et aussi précis ?Allons plus loin, peut-on être encore plus efficace quitte à sacrifier une partie de la précision ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 4/36

Page 15: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Vue d’ensemble des travaux de la thèse

Vue d’ensemble des travaux de la thèse

Soit la problématique :

1. Améliorer la précision

2. En réduisant la dégradation de la performance

3. Avec de plus l’objectif : processus automatique

Aujourd’hui il est facile de doubler la précision presque automatiquement

Peut-on faire plus efficace et aussi précis ?Allons plus loin, peut-on être encore plus efficace quitte à sacrifier une partie de la précision ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 4/36

Page 16: Synth¨se de code avec compromis entre performance et pr©cision

Introduction Vue d’ensemble des travaux de la thèse

Vue d’ensemble des travaux de la thèse

Soit la problématique :

1. Améliorer la précisionTransformation à base d’EFT (à l’image de la compensation)

2. En réduisant la dégradation de la performanceDes stratégies de transformation avec compromis

3. Avec de plus l’objectif : processus automatiqueSynthèse de code

Aujourd’hui il est facile de doubler la précision presque automatiquement

Peut-on faire plus efficace et aussi précis ?Allons plus loin, peut-on être encore plus efficace quitte à sacrifier une partie de la précision ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 4/36

Page 17: Synth¨se de code avec compromis entre performance et pr©cision

Plan

Plan de l’exposé

1. Notions d’arithmétique flottante et d’amélioration de la précisionArithmétique flottante IEEE 754Transformations sans erreurArithmétique double-double et algorithmes compensés

2. Transformation automatique de programmeMise en place : l’outil CoHDMéthodologie : correction de la précisionLes transformations de la somme et du produitRésultats expérimentaux avec comparaisons à l’existant

3. Synthèse de code pour des compromis entre précision et temps d’exécutionMise en place : l’outil SyHDDes stratégies de transformation de programme avec compromisEnsemble de programme et critères de sélectionRésultats expérimentaux

4. Conclusions et perspectives

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 5/36

Page 18: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision

Plan de l’exposé

1. Notions d’arithmétique flottante et d’amélioration de la précisionArithmétique flottante IEEE 754Transformations sans erreurArithmétique double-double et algorithmes compensés

2. Transformation automatique de programmeMise en place : l’outil CoHDMéthodologie : correction de la précisionLes transformations de la somme et du produitRésultats expérimentaux avec comparaisons à l’existant

3. Synthèse de code pour des compromis entre précision et temps d’exécutionMise en place : l’outil SyHDDes stratégies de transformation de programme avec compromisEnsemble de programme et critères de sélectionRésultats expérimentaux

4. Conclusions et perspectives

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 6/36

Page 19: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique flottante IEEE 754

Arithmétique flottante IEEE 754

Permet la représentation des nombres réels en machine [IEEE754]

Ou plutôt leurs approximations : impossible de les représenter exactement en machine

Un standard qui définit :

une représentation (−1)s×m×2e

des arrondis au plus près (RN), vers 0 (RZ), +∞ (RU), −∞ (RD)

des formats binary32, binary64, etc

x = 0.1≈

s e m

représentation de x sur en binary32bits perdus après arrondi au plus près

0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 . . .

Une représentation finie implique des pertes de précision

Les erreurs d’arrondis mènent à d’autres phénomènes : élimination, absorptionpar exemple (absorption) : RN((a+b)−a) = 0 si a� b et b 6= 0

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 7/36

Page 20: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique flottante IEEE 754

Arithmétique flottante IEEE 754

Permet la représentation des nombres réels en machine [IEEE754]

Ou plutôt leurs approximations : impossible de les représenter exactement en machine

Un standard qui définit :

une représentation (−1)s×m×2e

des arrondis au plus près (RN), vers 0 (RZ), +∞ (RU), −∞ (RD)

des formats binary32, binary64, etc

x = 0.1≈

s e m

représentation de x sur en binary32bits perdus après arrondi au plus près

0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 . . .

Une représentation finie implique des pertes de précision

Les erreurs d’arrondis mènent à d’autres phénomènes : élimination, absorptionpar exemple (absorption) : RN((a+b)−a) = 0 si a� b et b 6= 0

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 7/36

Page 21: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique flottante IEEE 754

Arithmétique flottante IEEE 754

Permet la représentation des nombres réels en machine [IEEE754]

Ou plutôt leurs approximations : impossible de les représenter exactement en machine

Un standard qui définit :

une représentation (−1)s×m×2e

des arrondis au plus près (RN), vers 0 (RZ), +∞ (RU), −∞ (RD)

des formats binary32, binary64, etc

x = 0.1≈

s e m

représentation de x sur en binary32bits perdus après arrondi au plus prèsbits perdus après arrondi au plus près

0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 . . .1

Une représentation finie implique des pertes de précision

Les erreurs d’arrondis mènent à d’autres phénomènes : élimination, absorptionpar exemple (absorption) : RN((a+b)−a) = 0 si a� b et b 6= 0

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 7/36

Page 22: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Transformations sans erreur

Blocs de base : les transformations sans erreur (EFT)

Définition [MBdD10]

Soit ◦ ∈ {+,−,×}, si x = RN(a◦b), alors l’erreur de l’opération flottante y = (a◦b)− x est un flottant

Comment calculer y avec les opérations de l’arithmétique flottante ?

La somme

function FASTTWOSUM(a,b) . [DEKKER, 71]x ← RN(a+b) . |a| ≥ |b|y ← RN((a− x)+b)return (x ,y)

end function

+b

a

x

y

function TWOSUM(a,b) . [KNUTH, 69]x ← RN(a+b)z← RN(x−a)y ← RN((a− (x− z))+(b− z))return (x ,y)

end function

+b

a

x

y

flop LatenceFASTTWOSUM 3 3

TWOSUM 6 5

Le produit

function TWOPRODUCT(a,b) . [DEKKER, 71]x ← RN(a×b)[aH , aL] = SPLIT(a)[bH , bL] = SPLIT(b)y ← RN(aL×bL− (((x−aH ×bH )−aL×bH )−aH ×bL))return (x ,y)

end function

function SPLIT(a) . [VELTKAMP, 68]c← RN(f ×a) . f = 2dp/2e+1aH ← RN(c− (c−a))aL ← RN(a−aH )return (aH ,aL)

end function

×b

a

x

y

flop LatenceTWOPRODUCT 17 8

TWOPRODUCTFMA 2 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 8/36

Page 23: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Transformations sans erreur

Blocs de base : les transformations sans erreur (EFT)

Définition [MBdD10]

Soit ◦ ∈ {+,−,×}, si x = RN(a◦b), alors l’erreur de l’opération flottante y = (a◦b)− x est un flottant

Comment calculer y avec les opérations de l’arithmétique flottante ?

La somme

function FASTTWOSUM(a,b) . [DEKKER, 71]x ← RN(a+b) . |a| ≥ |b|y ← RN((a− x)+b)return (x ,y)

end function

+b

a

x

y

function TWOSUM(a,b) . [KNUTH, 69]x ← RN(a+b)z← RN(x−a)y ← RN((a− (x− z))+(b− z))return (x ,y)

end function

+b

a

x

y

flop LatenceFASTTWOSUM 3 3

TWOSUM 6 5

Le produit

function TWOPRODUCT(a,b) . [DEKKER, 71]x ← RN(a×b)[aH , aL] = SPLIT(a)[bH , bL] = SPLIT(b)y ← RN(aL×bL− (((x−aH ×bH )−aL×bH )−aH ×bL))return (x ,y)

end function

function SPLIT(a) . [VELTKAMP, 68]c← RN(f ×a) . f = 2dp/2e+1aH ← RN(c− (c−a))aL ← RN(a−aH )return (aH ,aL)

end function

×b

a

x

y

flop LatenceTWOPRODUCT 17 8

TWOPRODUCTFMA 2 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 8/36

Page 24: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Transformations sans erreur

Blocs de base : les transformations sans erreur (EFT)

Définition [MBdD10]

Soit ◦ ∈ {+,−,×}, si x = RN(a◦b), alors l’erreur de l’opération flottante y = (a◦b)− x est un flottant

Comment calculer y avec les opérations de l’arithmétique flottante : les EFT

La somme

function FASTTWOSUM(a,b) . [DEKKER, 71]x ← RN(a+b) . |a| ≥ |b|y ← RN((a− x)+b)return (x ,y)

end function

+b

a

x

y

function TWOSUM(a,b) . [KNUTH, 69]x ← RN(a+b)z← RN(x−a)y ← RN((a− (x− z))+(b− z))return (x ,y)

end function

+b

a

x

y

flop LatenceFASTTWOSUM 3 3

TWOSUM 6 5

Le produit

function TWOPRODUCT(a,b) . [DEKKER, 71]x ← RN(a×b)[aH , aL] = SPLIT(a)[bH , bL] = SPLIT(b)y ← RN(aL×bL− (((x−aH ×bH )−aL×bH )−aH ×bL))return (x ,y)

end function

function SPLIT(a) . [VELTKAMP, 68]c← RN(f ×a) . f = 2dp/2e+1aH ← RN(c− (c−a))aL ← RN(a−aH )return (aH ,aL)

end function

×b

a

x

y

flop LatenceTWOPRODUCT 17 8

TWOPRODUCTFMA 2 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 8/36

Page 25: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Transformations sans erreur

Blocs de base : les transformations sans erreur (EFT)

Définition [MBdD10]

Soit ◦ ∈ {+,−,×}, si x = RN(a◦b), alors l’erreur de l’opération flottante y = (a◦b)− x est un flottant

Comment calculer y avec les opérations de l’arithmétique flottante : les EFT

La somme

function FASTTWOSUM(a,b) . [DEKKER, 71]x ← RN(a+b) . |a| ≥ |b|y ← RN((a− x)+b)return (x ,y)

end function

+b

a

x

y

function TWOSUM(a,b) . [KNUTH, 69]x ← RN(a+b)z← RN(x−a)y ← RN((a− (x− z))+(b− z))return (x ,y)

end function

+b

a

x

y

flop LatenceFASTTWOSUM 3 3

TWOSUM 6 5

Le produit

function TWOPRODUCT(a,b) . [DEKKER, 71]x ← RN(a×b)[aH , aL] = SPLIT(a)[bH , bL] = SPLIT(b)y ← RN(aL×bL− (((x−aH ×bH )−aL×bH )−aH ×bL))return (x ,y)

end function

function SPLIT(a) . [VELTKAMP, 68]c← RN(f ×a) . f = 2dp/2e+1aH ← RN(c− (c−a))aL ← RN(a−aH )return (aH ,aL)

end function

×b

a

x

y

flop LatenceTWOPRODUCT 17 8

TWOPRODUCTFMA 2 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 8/36

Page 26: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Transformations sans erreur

Blocs de base : les transformations sans erreur (EFT)

Définition [MBdD10]

Soit ◦ ∈ {+,−,×}, si x = RN(a◦b), alors l’erreur de l’opération flottante y = (a◦b)− x est un flottant

Comment calculer y avec les opérations de l’arithmétique flottante : les EFT

La somme

function FASTTWOSUM(a,b) . [DEKKER, 71]x ← RN(a+b) . |a| ≥ |b|y ← RN((a− x)+b)return (x ,y)

end function

+b

a

x

y

function TWOSUM(a,b) . [KNUTH, 69]x ← RN(a+b)z← RN(x−a)y ← RN((a− (x− z))+(b− z))return (x ,y)

end function

+b

a

x

y

flop LatenceFASTTWOSUM 3 3

TWOSUM 6 5

Le produit

function TWOPRODUCT(a,b) . [DEKKER, 71]x ← RN(a×b)[aH , aL] = SPLIT(a)[bH , bL] = SPLIT(b)y ← RN(aL×bL− (((x−aH ×bH )−aL×bH )−aH ×bL))return (x ,y)

end function

function SPLIT(a) . [VELTKAMP, 68]c← RN(f ×a) . f = 2dp/2e+1aH ← RN(c− (c−a))aL ← RN(a−aH )return (aH ,aL)

end function

×b

a

x

y

flop LatenceTWOPRODUCT 17 8

TWOPRODUCTFMA 2 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 8/36

Page 27: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 1/2

Deux méthodes à base d’EFT pour améliorer la précision

arithmétique double-double : DEKKER en 1971 avec la somme et le produit [Dek71]

algorithmes compensés : années 2000 par RUMP, LOUVET, etc [ROO05, Lou07]

double-double (DD)I DEKKER, 1971I BAILEY et al. (QD Lib), 2000I SAITO, 2010 (Scilab Toolbox : QuPAT)

Générique, algorithmes à appliquer surchaque opération élémentaire

Application presque automatique :surcharge

algorithmes compensésI RUMP et al. (SUM2, DOT2), 2005I LOUVET (COMPHORNER), 2007I GRAILLAT et al. (COMPHORNERDER), 2013

Spécifique, travail d’expert : une thèse ouarticle par algorithme

Aujourd’hui : somme, produit scalaire,évaluations polynômiales

double-double générique mais très fort impact sur le temps de calcul

algo. compensés permet de meilleurs performances : un parallélisme d’instruction (ILP) exploitéfacilement par le processeur [LL07] mais très spécifique

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 9/36

Page 28: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 1/2

Deux méthodes à base d’EFT pour améliorer la précision

arithmétique double-double : DEKKER en 1971 avec la somme et le produit [Dek71]

algorithmes compensés : années 2000 par RUMP, LOUVET, etc [ROO05, Lou07]

double-double (DD)I DEKKER, 1971I BAILEY et al. (QD Lib), 2000I SAITO, 2010 (Scilab Toolbox : QuPAT)

Générique, algorithmes à appliquer surchaque opération élémentaire

Application presque automatique :surcharge

algorithmes compensésI RUMP et al. (SUM2, DOT2), 2005I LOUVET (COMPHORNER), 2007I GRAILLAT et al. (COMPHORNERDER), 2013

Spécifique, travail d’expert : une thèse ouarticle par algorithme

Aujourd’hui : somme, produit scalaire,évaluations polynômiales

double-double générique mais très fort impact sur le temps de calcul

algo. compensés permet de meilleurs performances : un parallélisme d’instruction (ILP) exploitéfacilement par le processeur [LL07] mais très spécifique

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 9/36

Page 29: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 1/2

Deux méthodes à base d’EFT pour améliorer la précision

arithmétique double-double : DEKKER en 1971 avec la somme et le produit [Dek71]

algorithmes compensés : années 2000 par RUMP, LOUVET, etc [ROO05, Lou07]

double-double (DD)I DEKKER, 1971I BAILEY et al. (QD Lib), 2000I SAITO, 2010 (Scilab Toolbox : QuPAT)

Générique, algorithmes à appliquer surchaque opération élémentaire

Application presque automatique :surcharge

algorithmes compensésI RUMP et al. (SUM2, DOT2), 2005I LOUVET (COMPHORNER), 2007I GRAILLAT et al. (COMPHORNERDER), 2013

Spécifique, travail d’expert : une thèse ouarticle par algorithme

Aujourd’hui : somme, produit scalaire,évaluations polynômiales

double-double générique mais très fort impact sur le temps de calcul

algo. compensés permet de meilleurs performances : un parallélisme d’instruction (ILP) exploitéfacilement par le processeur [LL07] mais très spécifique

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 9/36

Page 30: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 1/2

Deux méthodes à base d’EFT pour améliorer la précision

arithmétique double-double : DEKKER en 1971 avec la somme et le produit [Dek71]

algorithmes compensés : années 2000 par RUMP, LOUVET, etc [ROO05, Lou07]

double-double (DD)I DEKKER, 1971I BAILEY et al. (QD Lib), 2000I SAITO, 2010 (Scilab Toolbox : QuPAT)

Générique, algorithmes à appliquer surchaque opération élémentaire

Application presque automatique :surcharge

algorithmes compensésI RUMP et al. (SUM2, DOT2), 2005I LOUVET (COMPHORNER), 2007I GRAILLAT et al. (COMPHORNERDER), 2013

Spécifique, travail d’expert : une thèse ouarticle par algorithme

Aujourd’hui : somme, produit scalaire,évaluations polynômiales

double-double générique mais très fort impact sur le temps de calcul

algo. compensés permet de meilleurs performances : un parallélisme d’instruction (ILP) exploitéfacilement par le processeur [LL07] mais très spécifique

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 9/36

Page 31: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Des opérateurs double-double : QDLib [HBL01]

aH aL

bH

bL

xH xL

+

+

+

+

+

+

renormalisation

function QD_TWOSUM(aH , aL , bH , bL)[rH , rL] = TWOSUM(aH , bH )[sH , sL] = TWOSUM(aL, bL)c← RN(rL + sH )[uH , uL] = FASTTWOSUM(rH , c)w ← RN(sL +uL)return [xH , xL] = FASTTWOSUM(uH , w)

end function

aH aL

bH

bL

xH xL

×

+

×

×

+

+

renormalisation

function QD_TWOPRODUCT(aH , aL , bH , bL)[rH , rL] = TWOPRODUCT(aH , bH )rL ← RN(rL +(aH ×bL))rL ← RN(rL +(aL×bH ))return [xH , xL] = FASTTWOSUM(rH , rL)

end function

flop LatenceQD_TWOSUM 20 13

QD_TWOPRODUCT 24 13

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 10/36

Page 32: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 2/2

function SUM(a1 , a2 , . . . , an )for i = 2 : n do

s← RN(s+ai )end forreturn s

end function

function SUMDD(a1 , a2 , . . . , an )sH ← a1sL ← 0for i = 2 : n do

[sH , sL] = QD_TWOSUM(sH , sL , ai , ∅)end forreturn sH

end function

function SUM2(a1 , a2 , . . . , an )s← a1e← 0for i = 2 : n do

[s, ε] = TWOSUM(s, ai )e← RN(e+ ε)

end forreturn RN(s+e)

end function

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

si

ai

si+1

SUM

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 11/36

Page 33: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 2/2

function SUM(a1 , a2 , . . . , an )for i = 2 : n do

s← RN(s+ai )end forreturn s

end function

function SUMDD(a1 , a2 , . . . , an )sH ← a1sL ← 0for i = 2 : n do

[sH , sL] = QD_TWOSUM(sH , sL , ai , ∅)end forreturn sH

end function

function SUM2(a1 , a2 , . . . , an )s← a1e← 0for i = 2 : n do

[s, ε] = TWOSUM(s, ai )e← RN(e+ ε)

end forreturn RN(s+e)

end function

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

si

ai

si+1

SUM

+

sHi

ai

sHi+1

sLi

sLi+1

SUMDD

+

+

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 11/36

Page 34: Synth¨se de code avec compromis entre performance et pr©cision

Notions d’arithmétique flottante et d’amélioration de la précision Arithmétique double-double et algorithmes compensés

Arithmétique double-double et algorithmes compensés 2/2

function SUM(a1 , a2 , . . . , an )for i = 2 : n do

s← RN(s+ai )end forreturn s

end function

function SUMDD(a1 , a2 , . . . , an )sH ← a1sL ← 0for i = 2 : n do

[sH , sL] = QD_TWOSUM(sH , sL , ai , ∅)end forreturn sH

end function

function SUM2(a1 , a2 , . . . , an )s← a1e← 0for i = 2 : n do

[s, ε] = TWOSUM(s, ai )e← RN(e+ ε)

end forreturn RN(s+e)

end function

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

si

ai

si+1

SUM

+

sHi

ai

sHi+1

sLi

sLi+1

SUMDD

+

+

+

si

ai

si+1

ei

ei+1

SUM2

+

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 11/36

Page 35: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme

Plan de l’exposé

1. Notions d’arithmétique flottante et d’amélioration de la précisionArithmétique flottante IEEE 754Transformations sans erreurArithmétique double-double et algorithmes compensés

2. Transformation automatique de programmeMise en place : l’outil CoHDMéthodologie : correction de la précisionLes transformations de la somme et du produitRésultats expérimentaux avec comparaisons à l’existant

3. Synthèse de code pour des compromis entre précision et temps d’exécutionMise en place : l’outil SyHDDes stratégies de transformation de programme avec compromisEnsemble de programme et critères de sélectionRésultats expérimentaux

4. Conclusions et perspectives

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 12/36

Page 36: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Mise en place : l’outil CoHD

Un outil pour corriger la précision : CoHD

SyHDCoHD

FrontC

Traitement desentrées

Espace derecherche

Ensemble destratégies

paramétrées

Mesures etexploration des

résultatsSélection

GCC*PAPI

Taille*

C source

Objectifsd’optimisation

Données

C cible

C cibles àexplorer

Plot

Analysesyntaxique

Analysesémantique

Génération del’AST

Bibliothèque destransformations

Bibliothèque desopérateurs

Génération decode

Options detransformation

ASTFMA*

Modules Outils externes Options (*) Entrées/sorties

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 13/36

Page 37: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Mise en place : l’outil CoHD

Un outil pour corriger la précision : CoHD

SyHDCoHD

FrontC

Traitement desentrées

Espace derecherche

Ensemble destratégies

paramétrées

Mesures etexploration des

résultatsSélection

GCC*PAPI

Taille*

C source

Objectifsd’optimisation

Données

C cible

C cibles àexplorer

Plot

Analysesyntaxique

Analysesémantique

Génération del’AST

Bibliothèque destransformations

Bibliothèque desopérateurs

Génération decode

Options detransformation

ASTFMA*

FrontC : parserC en Ocaml

Modules Outils externes Options (*) Entrées/sorties

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 13/36

Page 38: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Mise en place : l’outil CoHD

Un outil pour corriger la précision : CoHD

SyHDCoHD

Traitement desentrées

Espace derecherche

Ensemble destratégies

paramétrées

Mesures etexploration des

résultatsSélection

GCC*PAPI

Taille*

C source

Objectifsd’optimisation

Données

C cible

C cibles àexplorer

Plot

Analysesyntaxique

Analysesémantique

Génération del’AST

Bibliothèque destransformations

Bibliothèque desopérateurs

Génération decode

Options detransformation

ASTFMA*

CoHD :transformation

de code Csource-à-source

FrontC

Modules Outils externes Options (*) Entrées/sorties

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 13/36

Page 39: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Démonstration : transformation automatique source-à-source

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 14/36

Page 40: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantes

I Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises àl’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquences

I c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pourchacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 41: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantes

I Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises àl’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquences

I c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pourchacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 42: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantes

I Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises àl’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquences

I c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pourchacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 43: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantesI Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises à

l’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquences

I c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pourchacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 44: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantesI Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises à

l’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquences

I c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pourchacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 45: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Méthodologie : correction de la précision

Méthodologie de la transformation : correction de la précision

Trois étapes pour la transformation

1. Détecter les séquences d’opérations flottantesI Une séquence est l’ensemble E de toutes les opérations flottantes dépendantes requises à

l’obtention d’un ou plusieurs résultats : calcul des dépendances à partir de l’AST

2. Pour chaque séquence : calculer les erreurs puis les accumuler tout au long de la suited’opérations

I remplacer les opérations élémentaires par des EFTI accumuler les termes d’erreurs

un nombre flottant x correspond alors à un nombre « automatiquement compensé » (auto-comp) :la paire (x ,δx ) où δx ∈ F est l’approximation des erreurs accumulées résultant du calcul de x

3. Fermer les séquencesI c’est l’étape de correction proprement dite : pour fermer une séquence, sommer x et δx pour

chacun des résultats de la séquence

Fermeture(E )⇔∀x un résultat de la séquence : x ← RN(x +δx )

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 15/36

Page 46: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Les transformations de la somme et du produit

Les transformations de la somme et du produitfunction AUTOCOMP_TWOSUM((a,δa),(b,δb))

[s, δ+] = TWOSUM(a, b)

δs ← RN((δa +δb)+δ+)

return (s,δs)end function

function AUTOCOMP_TWOPRODUCT((a,δa),(b,δb))

[s, δ×] = TWOPRODUCT(a, b)

δs ← RN(((a×δb)+(b×δa))+δ×)

return (s,δs)end function

a δa

b

δb

s δs

+

+

+

AUTOCOMP_TWOSUM

flop LatenceAC_TWOSUM 8 6

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

a δa

b

δb

s δs

×

×

×

+

+

AUTOCOMP_TWOPRODUCT

flop LatenceAC_TWOPRODUCT 21 9

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 16/36

Page 47: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Les transformations de la somme et du produit

Les transformations de la somme et du produitfunction AUTOCOMP_TWOSUM((a,δa),(b,δb))

[s, δ+] = TWOSUM(a, b)

δs ← RN(δa +δ+)

return (s,δs)end function

function AUTOCOMP_TWOPRODUCT((a,δa),(b,δb))

[s, δ×] = TWOPRODUCT(a, b)

δs ← RN((a×δb)+δ×)

return (s,δs)end function

a δa

b

δb

s δs

+

+

+

AUTOCOMP_TWOSUM

flop LatenceAC_TWOSUM 7 6

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

a δa

b

δb

s δs

×

×

×

+

+

AUTOCOMP_TWOPRODUCT

flop LatenceAC_TWOPRODUCT 19 9

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 16/36

Page 48: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Les transformations de la somme et du produit

Les transformations de la somme et du produitfunction AUTOCOMP_TWOSUM((a,δa),(b,δb))

[s, δ+] = TWOSUM(a, b)

δs ← RN(δb +δ+)

return (s,δs)end function

function AUTOCOMP_TWOPRODUCT((a,δa),(b,δb))

[s, δ×] = TWOPRODUCT(a, b)

δs ← RN((b×δa)+δ×)

return (s,δs)end function

a δa

b

δb

s δs

+

+

+

AUTOCOMP_TWOSUM

flop LatenceAC_TWOSUM 7 6

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

a δa

b

δb

s δs

×

×

×

+

+

AUTOCOMP_TWOPRODUCT

flop LatenceAC_TWOPRODUCT 19 9

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 16/36

Page 49: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Les transformations de la somme et du produit

Les transformations de la somme et du produit

function AUTOCOMP_TWOSUM((a,δa),(b,δb))

[s, δ+] = TWOSUM(a, b)

δs ← δ+

return (s,δs)end function

function AUTOCOMP_TWOPRODUCT((a,δa),(b,δb))

[s, δ×] = TWOPRODUCT(a, b)

δs ← δ×

return (s,δs)end function

a δa

b

δb

s δs

+

+

+

AUTOCOMP_TWOSUM

flop LatenceAC_TWOSUM 6 5

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

a δa

b

δb

s δs

×

×

×

+

+

AUTOCOMP_TWOPRODUCT

flop LatenceAC_TWOPRODUCT 17 8

a

b

δb

s δs

a δa

b

s δs

a

b

s δs

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 16/36

Page 50: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Résultats expérimentaux avec comparaisons à l’existant

Ces transformations permettent-elles de retrouver les résultats de la littérature ?

Algorithmes DD et compensés :

Sommation : SUM2 [ROO05]

Évaluation polynomialemonômes HORNER [GLL09] HORNERDER [JGH13]Bernstein DECASTELJAU, DECASTELJAUDER [JLCS10]

Tchebychev CLENSHAWI, CLENSHAWII [JBL11]

Illustration du processus de transformation avec l’algorithme HORNER

Analyse à l’image des études similaires faites dans la littérature [Lou07]

function HORNER(p,x)rn← anfor i = n−1 :−1 : 0 do

ri ← RN(ri+1× x +ai)end forreturn r0

end function

polynôme pH(x) = (x−0,75)5(x−1,0)11

données 512 points x ∈ {0,68 : 1,15}mesures bits corrects, cycles, instructions, IPC

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 17/36

Page 51: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r ;int i ;

r = P[n] ;for(i = n-1; i >= 0; i--) {

r = r * x + P[i] ;}

return r ;}

Première transformation

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 52: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp ;int i ;

r = P[n] ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Première transformation→ passage au format trois adresses

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 53: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp ;int i ;

r = P[n] ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Détection des séquences d’opérations

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 54: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp ;int i ;

r = P[n] ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Détection des séquences d’opérations→ 1 séquence détectée

iitérations

r i−1

r i

x

P[i] +

×

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

2n 2 2n

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 55: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp ;int i ;

r = P[n] ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Appliquer les transformations pour chaque opération de la séquence

iitérations

r i−1

r i

x

P[i] +

×

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

2n 2 2n

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 56: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp, d_r ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Appliquer les transformations pour chaque opération de la séquence → maisavant déterminer les données étendues (i.e. auto-comp)

iitérations

r i−1

r i

x

P[i] +

×

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

2n 2 2n

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 57: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;r = tmp + P[i] ;

}

return r ;}

Transformation de la multiplication tmp = r * x

[tmp,dtmp ] = AUTOCOMP_TWOPRODUCT(r ,dr ,x ,∅)

coût : 19 (latence de 9) opérations flottantes

iitérations

r i−1

r i

x

P[i] +

×

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

2n 2 2n

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 58: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;

}

return r ;}

Transformation de la multiplication tmp = r * x

[tmp,dtmp ] = AUTOCOMP_TWOPRODUCT(r ,dr ,x ,∅)

coût : 19 (latence de 9) opérations flottantes

iitérations

AUTOCOMP_TWOPRODUCT

r i−1 di−1r

r i

x

P[i] dtmp

××

+

+

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale(2+18)n 9 ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 59: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;

}

return r ;}

Transformation de la somme r = tmp + P[i]

[r ,dr ] = AUTOCOMP_TWOSUM(tmp,dtmp ,P[i],∅)

coût : 7 (latence de 6) opérations flottantes

iitérations

AUTOCOMP_TWOPRODUCT

r i−1 di−1r

r i

x

P[i] dtmp

××

+

+

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

20n 9 ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 60: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u, d_2s ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r ;}

Transformation de la somme r = tmp + P[i]

[r ,dr ] = AUTOCOMP_TWOSUM(tmp,dtmp ,P[i],∅)

coût : 7 (latence de 6) opérations flottantes

iitérations

AUTOCOMP_TWOPRODUCT

AUTOCOMP_TWOSUM

r i−1 di−1r

r i

x

P[i]

dir

××

+

+ +

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale(20+6)n 10 ?

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 61: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u, d_2s ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r ;}

Fermeture de la séquence d’opérations

Remarque : chevauchement des itérations sur 8 cycles d’une itération à la sui-vante, la latence pour les n itérations est donc de 2n+8

iitérations

AUTOCOMP_TWOPRODUCT

AUTOCOMP_TWOSUM

r i−1 di−1r

r i

x

P[i]

dir

××

+

+ +

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

26n 10 2n+8

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 62: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Transformation automatique du programme d’évaluation polynomiale HORNER

doubleHorner(double *P, unsigned int n, double x) {

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u, d_2s ;int i ;

r = P[n] ;d_r = 0.0 ;for(i = n-1; i >= 0; i--) {

tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r + d_r ;}

Fermeture de la séquence d’opérations

r = r +dr

coût : 1 opération flottante

iitérations

AUTOCOMP_TWOPRODUCT

AUTOCOMP_TWOSUM

Fermeture

r i−1 di−1r

r i

x

P[i]

dir

r

××

+

+ +

+

Compteurs (d’opérations flottantes)nombre total latence par itération latence totale

26n+1 10 2n+9

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 18/36

Page 63: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

auto-comp vs double-double et compensation 1/2Comparaison des codes sources

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u,d_2s ;

int i ;

r = P[n] ;d_r = 0.0 ;

for(i = n-1; i >= 0; i--) {tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl

) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r + d_r ;

ACHORNER

double r_h, r_l, t_h, t_l, x_hi , x_lo , hi, lo, t ;int i ;

t = x * 134217729 ;x_hi = t - (t - x) ;x_lo = x - x_hi ;r_h = P[n] ;r_l = 0.0 ;

for(i = n-1; i >= 0; i--) {t = r_h * 134217729 ;hi = t - (t - r_h) ;lo = (r_h - hi) ;t_h = r_h * x ;t_l = (((hi * x_hi - t_h) + hi * x_lo) + lo * x_hi) +

lo * x_lo ;t_l += r_l * x ;r_h = t_h + t_l ;r_l = (t_h - r_h) + t_l ;t_h = r_h + P[i] ;t = t_h - r_h ;t_l = ((r_h - (t_h - t)) + (P[i] - t)) ;t_l += r_l ;r_h = t_h + t_l ;r_l = (t_h - r_h) + t_l ;

}

return r_h ;

DDHORNER

ACHORNER DDHORNER COMPHORNER

opérations flottantes 26n+1 28n+4

22n+5

latence 2n+9 17n+2

2n+9

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 19/36

Page 64: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

auto-comp vs double-double et compensation 1/2Comparaison des codes sources

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u,d_2s ;

int i ;

r = P[n] ;d_r = 0.0 ;

for(i = n-1; i >= 0; i--) {tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl

) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r + d_r ;

ACHORNER

double p, r, c, pi, sig, x_hi , x_lo , hi, lo, t ;int i ;

t = x * 134217729 ;x_hi = t - (t - x) ;x_lo = x - x_hi ;r = P[n] ;c = 0.0 ;

for(i = n-1; i >= 0; i--) {p = r * x ;t = r * 134217729 ;hi = t - (t - r) ;lo = r - hi ;pi = (((hi * x_hi - p) + hi * x_lo) + lo * x_hi) + lo

* x_lo ;r = p + P[i] ;t = r - p ;sig = (p - (r - t)) + (P[i] - t) ;c = c * x + (pi+sig) ;

}

return r + c ;

COMPHORNER

ACHORNER DDHORNER COMPHORNER

opérations flottantes 26n+1 28n+4 22n+5latence 2n+9 17n+2 2n+9

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 19/36

Page 65: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

auto-comp vs double-double et compensation 1/2Comparaison des codes sources

double r, tmp, d_tmp , d_r, c, rh, rl, xh, xl, d_2p , u,d_2s ;

int i ;

r = P[n] ;d_r = 0.0 ;

for(i = n-1; i >= 0; i--) {tmp = r * x ;c = r * 134217729 ;rh = c - (c - r) ;rl = r - rh ;c = x * 134217729 ;xh = c - (c - x) ;xl = x - xh ;d_2p = rl * xl - (((x - rh * xh) - rl * xh) - rh * xl

) ;d_tmp = d_2p + d_r * x ;r = tmp + P[i] ;u = r - tmp ;d_2s = (tmp - (r - u)) + (P[i] - u) ;d_r = d_2s + d_tmp ;

}

return r + d_r ;

ACHORNER

double p, r, c, pi, sig, x_hi , x_lo , hi, lo, t ;int i ;

t = x * 134217729 ;x_hi = t - (t - x) ;x_lo = x - x_hi ;r = P[n] ;c = 0.0 ;

for(i = n-1; i >= 0; i--) {p = r * x ;t = r * 134217729 ;hi = t - (t - r) ;lo = r - hi ;pi = (((hi * x_hi - p) + hi * x_lo) + lo * x_hi) + lo

* x_lo ;r = p + P[i] ;t = r - p ;sig = (p - (r - t)) + (P[i] - t) ;c = c * x + (pi+sig) ;

}

return r + c ;

COMPHORNER

ACHORNER DDHORNER COMPHORNER

opérations flottantes 22n+5 28n+4 22n+5latence 2n+9 17n+2 2n+9

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 19/36

Page 66: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

auto-comp vs double-double et compensation 2/2Comparaison avec les résultats de la littérature

Mesures de précision

0

10

20

30

40

50

0.75 0.85 0.95 1.05 1.15

Nombre de bits exacts (binary64)

HORNER

DDHORNER

COMPHORNER

ACHORNER

Mesures de performances (PAPI : moyenne sur 106 mesures, Ubuntu 12.04, Core i5 2.53GHz, Gcc -O2)

PAPI : Instructions Cycles IPC PERPI : Instructions Cycles IPC

HORNER 42 57 0,73 76 37 2,05COMPHORNER 532 277 1,99 566 62 9,12DDHORNER 658 920 0,72 676 325 2,08ACHORNER 553 303 1,82 581 77 7,54AC/COMP 1,04 1,09 0,95 1,02 1,24 0,82AC/DD 0,84 0,33 2,55 0,85 0,23 3,62

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 20/36

Page 67: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

auto-comp vs double-double et compensation 2/2Comparaison avec les résultats de la littérature

Mesures de précision

0

10

20

30

40

50

0.75 0.85 0.95 1.05 1.15

Nombre de bits exacts (binary64)

HORNER

DDHORNER

COMPHORNER

ACHORNER

Mesures de performances (PAPI : moyenne sur 106 mesures, Ubuntu 12.04, Core i5 2.53GHz, Gcc -O2)

PAPI : Instructions Cycles IPC PERPI : Instructions Cycles IPC

HORNER 42 57 0,73 76 37 2,05COMPHORNER 532 277 1,99 566 62 9,12DDHORNER 658 920 0,72 676 325 2,08ACHORNER 553 303 1,82 581 77 7,54AC/COMP 1,04 1,09 0,95 1,02 1,24 0,82AC/DD 0,84 0,33 2,55 0,85 0,23 3,62

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 20/36

Page 68: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Résultats expérimentaux : la précision

Différence du nombre de bits corrects de AC vs. COMP et AC vs. DD

-2

-1.5

-1

-0.5

0

0.5

HORNER(pH ,x1 )

HORNER(pH ,x2 )

HORNERDER(pH ,x1 )

HORNERDER(pH ,x2 )

CLENSHAWI(pC ,x1 )

CLENSHAWI(pC ,x2 )

CLENSHAWII(pC ,x1 )

CLENSHAWII(pC ,x2 )

DECASTELJAU(pD ,x1 )

DECASTELJAU(pD ,x2 )

DECASTELJAUDER(pD ,x1 )

DECASTELJAUDER(pD ,x2 )

(a) Évaluations polynômiales

-10

-8

-6

-4

-2

0

SUM(d1 )

SUM(d2 )

SUM(d3 )

SUM(d4 )

SUM(d5 )

SUM(d6 )

(b) Sommes

AC−COMP AC−DD

pH polynôme pH (x) = (x−0,75)5(x−1,0)11

pC polynôme pC (x) = (x−0,75)7(x−1,0)10

pD polynôme pD(x) = (x−0,75)7(x−1,0)x1 256 valeurs tirées uniformément dans {0,85 : 0,95}x2 256 valeurs tirées uniformément dans {1,05 : 1,15}

d1 32 jeux de 104 valeurs de conditionnement 108

d2 32 jeux de 105 valeurs de conditionnement 108

d3 32 jeux de 106 valeurs de conditionnement 108

d4 32 jeux de 104 valeurs de conditionnement 1016

d5 32 jeux de 105 valeurs de conditionnement 1016

d6 32 jeux de 106 valeurs de conditionnement 1016

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 21/36

Page 69: Synth¨se de code avec compromis entre performance et pr©cision

Transformation automatique de programme Résultats expérimentaux avec comparaisons à l’existant

Résultats expérimentaux : les performances

Ratio (cycles et instructions) entre les algorithmes AC/Comp et AC/DD

00.20.40.60.8

11.21.41.6

(a) PAPI

00.20.40.60.8

11.21.41.6

(b) PERPI

Cycles AC/COMPCycles AC/DD

00.20.40.60.8

11.21.41.6

SUM(d2 )

SUM(d3 )

HORNER(pH ,x)

HORNERDER(pH ,x)

CLENSHAWI(pC ,x)

CLENSHAWII(pC ,x)

DECASTELJAU(pD ,x)

DECASTELJAUDER(pD ,x)

00.20.40.60.8

11.21.41.6

SUM(d2 )

SUM(d3 )

HORNER(pH ,x)

HORNERDER(pH ,x)

CLENSHAWI(pC ,x)

CLENSHAWII(pC ,x)

DECASTELJAU(pD ,x)

DECASTELJAUDER(pD ,x)

Instr. AC/COMPInstr. AC/DD

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 22/36

Page 70: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution

Plan de l’exposé

1. Notions d’arithmétique flottante et d’amélioration de la précisionArithmétique flottante IEEE 754Transformations sans erreurArithmétique double-double et algorithmes compensés

2. Transformation automatique de programmeMise en place : l’outil CoHDMéthodologie : correction de la précisionLes transformations de la somme et du produitRésultats expérimentaux avec comparaisons à l’existant

3. Synthèse de code pour des compromis entre précision et temps d’exécutionMise en place : l’outil SyHDDes stratégies de transformation de programme avec compromisEnsemble de programme et critères de sélectionRésultats expérimentaux

4. Conclusions et perspectives

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 23/36

Page 71: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Mise en place : l’outil SyHD

Un outil pour assurer la synthèse : SyHD

SyHD

Traitement desentrées

Espace derecherche

Ensemble destratégies

paramétrées

Mesures etexploration des

résultatsSélection

GCC*PAPI

Taille*

C source

Objectifsd’optimisation

Données

C cible

C cibles àexplorer

Plot

Analysesyntaxique

Analysesémantique

Génération del’AST

Bibliothèque destransformations

Bibliothèque desopérateurs

Génération decode

Options detransformation

ASTFMA*

CoHD

FrontC

Modules Outils externes Options (*) Entrées/sorties

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 24/36

Page 72: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Mise en place : l’outil SyHD

Un outil pour assurer la synthèse : SyHD

SyHD

Traitement desentrées

Espace derecherche

Ensemble destratégies

paramétrées

Mesures etexploration des

résultatsSélection

GCC*PAPI

Taille*

C source

Objectifsd’optimisation

Données

C cible

C cibles àexplorer

Plot

Analysesyntaxique

Analysesémantique

Génération del’AST

Bibliothèque destransformations

Bibliothèque desopérateurs

Génération decode

Options detransformation

ASTFMA*

CoHD

FrontC

SyHD :synthétiseur decode (données,environnement)

Modules Outils externes Options (*) Entrées/sorties

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 24/36

Page 73: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Mise en place : l’outil SyHD

Démonstration de la synthèse de code

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 25/36

Page 74: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 75: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 76: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

fermeture

exemple p1 :

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 77: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

fermeture

exemple p2 :

function AUTOPROP_TWOSUM((a,δa),(b,δb ))s← RN(a+b)δs ← RN(δa +δb )return (s,δs )

end function

function AUTOPROP_TWOPRODUCT((a,δa),(b,δb ))s← RN(a×b)δs ← RN(a×δb +b×δa)return (s,δs )

end function

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 78: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

fermeture

exemple p2 :

function AUTOPROP_TWOSUM((a,δa),(b,δb ))s← RN(a+b)δs ← RN(δa +δb )return (s,δs )

end function

function AUTOPROP_TWOPRODUCT((a,δa),(b,δb ))s← RN(a×b)δs ← RN(a×δb +b×δa)return (s,δs )

end function

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

AP_TWOPRODUCT

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 79: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation d’une trace : exécution séquentielle

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

fermeture

exemple p2 :

function AUTOPROP_TWOSUM((a,δa),(b,δb ))s← RN(a+b)δs ← RN(δa +δb )return (s,δs )

end function

function AUTOPROP_TWOPRODUCT((a,δa),(b,δb ))s← RN(a×b)δs ← RN(a×δb +b×δa)return (s,δs )

end function

Propagation p1

itérationi

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

+itération

i+1

r

x

P[i +1] +

×

Propagation p2itération

i

Fermeture

AC_TWOPRODUCT

AC_TWOSUM

r i−1 di−1r

x

P[i]

××

+

+ +

itérationi+

1

AP_TWOPRODUCT

AP_TWOSUM

x

P[i +1]

r

××

+ +

+

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 26/36

Page 80: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation graphique d’une trace

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

Les stratégies

rs(ρ, r)

ri(ρ, t, f )

sp(n)

rs(

ρ, r) position dans la boucle

ratio d’itérations à transformer

i=1

i=2

i=3

i=4

i=5

i=6

i=7

i=8

i=9

i=10

rs(>, 13 ), p1

rs(>, 13 ), p2

Transformation de boucle : répartition simple (rs)

ri(

ρ, t, f) position des itérations à transformer

nombre d’itérations à transformer

fréquence de transformation

ri(⊥,1,4), p1

ri(>,4,5), p2

Transformation de boucle : répartition intermittente (ri)

sp(

n)

nombre d’opérations à transformer

sp(4), p2

Transformation avec sélection dirigée par la précision (sp)

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 27/36

Page 81: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Des stratégies de transformation de programme avec compromis

Des stratégies de transformation de programme

Représentation graphique d’une trace

p1

fermeture fermeturePropagation p1 : fermetures multiples

p2

fermeturePropagation p2 : fermeture unique

Les stratégies

rs(ρ, r)

ri(ρ, t, f )

sp(n)

rs(

ρ, r) position dans la boucle

ratio d’itérations à transformer

i=1

i=2

i=3

i=4

i=5

i=6

i=7

i=8

i=9

i=10

rs(>, 13 ), p1

rs(>, 13 ), p2

Transformation de boucle : répartition simple (rs)

ri(

ρ, t, f) position des itérations à transformer

nombre d’itérations à transformer

fréquence de transformation

ri(⊥,1,4), p1

ri(>,4,5), p2

Transformation de boucle : répartition intermittente (ri)

sp(

n)

nombre d’opérations à transformer

sp(4), p2

Transformation avec sélection dirigée par la précision (sp)

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 27/36

Page 82: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Un espace de recherche E

Pour un ensemble représentatif des transformations possibles

rs(

ρ, r) ρ ∈ {>,⊥}

r ∈{

410 ,

510 ,

610 ,

710 ,

810 ,

910

}ri(

ρ, t, f)

(t, f ) ∈ {(1,5),(2,5),(3,5),(4,5),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}

sp(

n)

n ∈ {1,2,3,4}

L’utilisation supplémentaire des propagations p1 et p2 complète l’ensemble

rs(⊥,4/1

0), p

1

rs(⊥,5/1

0), p

1

rs(⊥,6/1

0), p

1

rs(⊥,7/1

0), p

1

rs(⊥,8/1

0), p

1

rs(⊥,9/1

0), p

1

rs(⊥,4/1

0), p

2

rs(⊥,5/1

0), p

2

rs(⊥,6/1

0), p

2

rs(⊥,7/1

0), p

2

rs(⊥,8/1

0), p

2

rs(⊥,9/1

0), p

2

rs(>,4/1

0), p

1

rs(>,5/1

0), p

1

rs(>,6/1

0), p

1

rs(>,7/1

0), p

1

rs(>,8/1

0), p

1

rs(>,9/1

0), p

1sp(1),

p 2

Exemple : ensemble de straté-gies générées pour la synthèsedu programme HORNER selon

les paramètres ρ, r , t, f ,n,p1,p2

ri(⊥,1,5),

p 1

ri(⊥,2,5),

p 1

ri(⊥,3,5),

p 1

ri(⊥,4,5),

p 1

ri(⊥,1,4),

p 1

ri(⊥,2,4),

p 1

ri(⊥,3,4),

p 1

ri(⊥,1,3),

p 1

ri(⊥,2,3),

p 1

ri(⊥,1,2),

p 1

ri(>,1,5),

p 1

ri(>,2,5),

p 1

ri(>,3,5),

p 1

ri(>,4,5),

p 1

ri(>,1,4),

p 1

ri(>,2,4),

p 1

ri(>,3,4),

p 1

ri(>,1,3),

p 1

ri(>,2,3),

p 1

ri(>,1,2),

p 1

ri(⊥,1,5),

p 2

ri(⊥,2,5),

p 2

ri(⊥,3,5),

p 2

ri(⊥,4,5),

p 2

ri(⊥,1,4),

p 2

ri(⊥,2,4),

p 2

ri(⊥,3,4),

p 2

ri(⊥,1,3),

p 2

ri(⊥,2,3),

p 2

ri(⊥,1,2),

p 2

ri(>,1,5),

p 2

ri(>,2,5),

p 2

ri(>,3,5),

p 2

ri(>,4,5),

p 2

ri(>,1,4),

p 2

ri(>,2,4),

p 2

ri(>,3,4),

p 2

ri(>,1,3),

p 2

ri(>,2,3),

p 2

ri(>,1,2),

p 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 28/36

Page 83: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Un espace de recherche E

Pour un ensemble représentatif des transformations possibles

rs(

ρ, r) ρ ∈ {>,⊥}

r ∈{

410 ,

510 ,

610 ,

710 ,

810 ,

910

}ri(

ρ, t, f)

(t, f ) ∈ {(1,5),(2,5),(3,5),(4,5),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}

sp(

n)

n ∈ {1,2,3,4}

L’utilisation supplémentaire des propagations p1 et p2 complète l’ensemble

rs(⊥,4/1

0), p

1

rs(⊥,5/1

0), p

1

rs(⊥,6/1

0), p

1

rs(⊥,7/1

0), p

1

rs(⊥,8/1

0), p

1

rs(⊥,9/1

0), p

1

rs(⊥,4/1

0), p

2

rs(⊥,5/1

0), p

2

rs(⊥,6/1

0), p

2

rs(⊥,7/1

0), p

2

rs(⊥,8/1

0), p

2

rs(⊥,9/1

0), p

2

rs(>,4/1

0), p

1

rs(>,5/1

0), p

1

rs(>,6/1

0), p

1

rs(>,7/1

0), p

1

rs(>,8/1

0), p

1

rs(>,9/1

0), p

1sp(1),

p 2

Exemple : ensemble de straté-gies générées pour la synthèsedu programme HORNER selon

les paramètres ρ, r , t, f ,n,p1,p2

ri(⊥,1,5),

p 1

ri(⊥,2,5),

p 1

ri(⊥,3,5),

p 1

ri(⊥,4,5),

p 1

ri(⊥,1,4),

p 1

ri(⊥,2,4),

p 1

ri(⊥,3,4),

p 1

ri(⊥,1,3),

p 1

ri(⊥,2,3),

p 1

ri(⊥,1,2),

p 1

ri(>,1,5),

p 1

ri(>,2,5),

p 1

ri(>,3,5),

p 1

ri(>,4,5),

p 1

ri(>,1,4),

p 1

ri(>,2,4),

p 1

ri(>,3,4),

p 1

ri(>,1,3),

p 1

ri(>,2,3),

p 1

ri(>,1,2),

p 1

ri(⊥,1,5),

p 2

ri(⊥,2,5),

p 2

ri(⊥,3,5),

p 2

ri(⊥,4,5),

p 2

ri(⊥,1,4),

p 2

ri(⊥,2,4),

p 2

ri(⊥,3,4),

p 2

ri(⊥,1,3),

p 2

ri(⊥,2,3),

p 2

ri(⊥,1,2),

p 2

ri(>,1,5),

p 2

ri(>,2,5),

p 2

ri(>,3,5),

p 2

ri(>,4,5),

p 2

ri(>,1,4),

p 2

ri(>,2,4),

p 2

ri(>,3,4),

p 2

ri(>,1,3),

p 2

ri(>,2,3),

p 2

ri(>,1,2),

p 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 28/36

Page 84: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Un espace de recherche E

Pour un ensemble représentatif des transformations possibles

rs(

ρ, r) ρ ∈ {>,⊥}

r ∈{

410 ,

510 ,

610 ,

710 ,

810 ,

910

}ri(

ρ, t, f)

(t, f ) ∈ {(1,5),(2,5),(3,5),(4,5),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}

sp(

n)

n ∈ {1,2,3,4}

L’utilisation supplémentaire des propagations p1 et p2 complète l’ensemble

rs(⊥,4/1

0), p

1

rs(⊥,5/1

0), p

1

rs(⊥,6/1

0), p

1

rs(⊥,7/1

0), p

1

rs(⊥,8/1

0), p

1

rs(⊥,9/1

0), p

1

rs(⊥,4/1

0), p

2

rs(⊥,5/1

0), p

2

rs(⊥,6/1

0), p

2

rs(⊥,7/1

0), p

2

rs(⊥,8/1

0), p

2

rs(⊥,9/1

0), p

2

rs(>,4/1

0), p

1

rs(>,5/1

0), p

1

rs(>,6/1

0), p

1

rs(>,7/1

0), p

1

rs(>,8/1

0), p

1

rs(>,9/1

0), p

1sp(1),

p 2Exemple : ensemble de straté-gies générées pour la synthèsedu programme HORNER selon

les paramètres ρ, r , t, f ,n,p1,p2

ri(⊥,1,5),

p 1

ri(⊥,2,5),

p 1

ri(⊥,3,5),

p 1

ri(⊥,4,5),

p 1

ri(⊥,1,4),

p 1

ri(⊥,2,4),

p 1

ri(⊥,3,4),

p 1

ri(⊥,1,3),

p 1

ri(⊥,2,3),

p 1

ri(⊥,1,2),

p 1

ri(>,1,5),

p 1

ri(>,2,5),

p 1

ri(>,3,5),

p 1

ri(>,4,5),

p 1

ri(>,1,4),

p 1

ri(>,2,4),

p 1

ri(>,3,4),

p 1

ri(>,1,3),

p 1

ri(>,2,3),

p 1

ri(>,1,2),

p 1

ri(⊥,1,5),

p 2

ri(⊥,2,5),

p 2

ri(⊥,3,5),

p 2

ri(⊥,4,5),

p 2

ri(⊥,1,4),

p 2

ri(⊥,2,4),

p 2

ri(⊥,3,4),

p 2

ri(⊥,1,3),

p 2

ri(⊥,2,3),

p 2

ri(⊥,1,2),

p 2

ri(>,1,5),

p 2

ri(>,2,5),

p 2

ri(>,3,5),

p 2

ri(>,4,5),

p 2

ri(>,1,4),

p 2

ri(>,2,4),

p 2

ri(>,3,4),

p 2

ri(>,1,3),

p 2

ri(>,2,3),

p 2

ri(>,1,2),

p 2

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 28/36

Page 85: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles

rbits exacts

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 86: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles

rbits exacts

s ∈ {maxs∈E

rbits exacts(s)}

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 87: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles

rbits exacts

s ∈ {maxs∈E

rbits exacts(s)}min

s∈{maxs∈E rbit exacts (s)}rcycles(s)

straté

gie5

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 88: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles

rbits faux

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 89: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles• •

••

• • ••

rbits faux

R1(α = β)

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 90: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles• •

••

• • ••

rbits faux

R1(α = β)

R1 =(

mins∈E

α · rbits faux (s)+β · rcycles(s)

straté

gien

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 91: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles

rbits exacts

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 92: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles•

• •

• • ••

rbits exacts

R2

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 93: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Ensemble de programme et critères de sélection

Des critères de sélection R0,R1,R2

Objectifs

Un maximum de précision

R0 = mins∈{maxs∈E rbits exacts(s)}

rcycles(s)

rcycles ratio de cycles entre AC et DD

rbits exacts ratio de bits exacts entre AC et DD

Un bon compromis temps-précision

R1 = mins∈E

(α · rbits faux (s)+β · rcycles(s)

)où α+β = 1 et rbits faux = 1− rbits exacts

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

••

••

••

•• •

••

• rcycles•

• •

• • ••

rbits exacts

R2

R2 = maxs∈E| rbits exacts(s)− rcycles(s) |

straté

gien

E ∈ { }str

atégie

1

straté

gie2

straté

gie3

straté

gie4

straté

gie5

. ..

. ..

. ..

straté

gien−

2

straté

gien−

1

straté

gien

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 29/36

Page 94: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Retour sur la démonstration : le programme HORNER

int main(int argc , char** argv){

int n=16;double x=atof(argv[1]);

double P[]={2.373046875000000e-01, -4.192382812500000e+00,3.467285156250000e+01, -1.781982421875000e+02,6.370019531250000e+02, -1.679423828125000e+03,3.378095703125000e+03, -5.288271484375000e+03,6.511538085937500e+03, -6.327524414062500e+03,4.836465820312500e+03, -2.877295898437500e+03,1.306113281250000e+03, -4.373437500000000e+02,1.018750000000000e+02, -1.475000000000000e+01,1.000000000000000e+00};

double r, res;int i;

r = P[n];

for(i=n-1; i>=0; i--) {r = r * x + P[i];

}

res = r;

printf("%.16e %.16e\n",x,res) ;return(0);

}

Conditions

Polynôme pH(x) = (x−0,75)5(x−1,0)11

Données 256 x ∈ {0,35 : 0,45} (dist. uniforme)

temps rcycles = 0,05précision rbits exacts = 0,64

Environnement Linux 3.2.0.51, Core i5 2.53GHz, gcc4.6.3, -O2, papi 5.1.0.2

Préparation du codeAjout de directives de pré-compilation

#pragma COHD time block

#pragma COHD accuracy res

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 30/36

Page 95: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Retour sur la démonstration : le programme HORNER

int main(int argc , char** argv){

int n=16;double x=atof(argv[1]);

double P[]={2.373046875000000e-01, -4.192382812500000e+00,3.467285156250000e+01, -1.781982421875000e+02,6.370019531250000e+02, -1.679423828125000e+03,3.378095703125000e+03, -5.288271484375000e+03,6.511538085937500e+03, -6.327524414062500e+03,4.836465820312500e+03, -2.877295898437500e+03,1.306113281250000e+03, -4.373437500000000e+02,1.018750000000000e+02, -1.475000000000000e+01,1.000000000000000e+00};

double r, res;int i;

#pragma COHD time block{

r = P[n];

#pragma COHD for decreasefor(i=n-1; i>=0; i--) {

r = r * x + P[i];}

res = r;}

#pragma COHD accuracy resprintf("%.16e %.16e\n",x,res) ;return(0);

}

Conditions

Polynôme pH(x) = (x−0,75)5(x−1,0)11

Données 256 x ∈ {0,35 : 0,45} (dist. uniforme)

temps rcycles = 0,05précision rbits exacts = 0,64

Environnement Linux 3.2.0.51, Core i5 2.53GHz, gcc4.6.3, -O2, papi 5.1.0.2

Préparation du codeAjout de directives de pré-compilation

#pragma COHD time block

#pragma COHD accuracy res

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 30/36

Page 96: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Résultats sur le programme HORNER

R0→ auto-comp rcycles , rbits exacts

00.20.40.60.8

11.21.4

rs(>

,4/1

0),p

2

rs(>

,4/10),

p 1rs(⊥

,4/1

0),p

1

rs(>

,5/10),

p 2rs(>

,5/10),

p 1rs(⊥

,5/10),

p 1rs(>

,6/1

0),p

2

rs(>

,6/10),

p 1rs(⊥

,6/1

0),p

1

rs(>

,7/1

0),p

2

rs(>

,7/10),

p 1rs(⊥

,7/10),

p 1rs(>

,8/10),

p 2rs(>

,8/10),

p 1rs(⊥

,8/1

0),p

1

rs(>

,9/10),

p 2rs(>

,9/1

0),p

1

rs(⊥

,9/10),

p 1ri(>

,1,5),

p 2ri(>

,1,5),

p 1ri(⊥

,1,5),

p 2ri(⊥

,1,5),

p 1ri(>

,2,5),

p 2ri(>

,2,5),

p 1ri(⊥

,2,5),

p 2ri(⊥

,2,5),

p 1ri(>

,3,5),

p 2ri(>

,3,5),

p 1ri(⊥

,3,5),

p 2ri(⊥

,3,5),

p 1ri(>

,4,5),

p 2ri(>

,4,5),

p 1ri(⊥

,4,5),

p 2ri(⊥

,4,5),

p 1ri(>

,1,2),

p 2ri(>

,1,2),

p 1ri(⊥

,1,2),

p 2ri(⊥

,1,2),

p 1ri(>

,1,3),

p 2ri(>

,1,3),

p 1ri(⊥

,1,3),

p 2ri(⊥

,1,3),

p 1ri(>

,1,4),

p 2ri(>

,1,4),

p 1ri(⊥

,1,4),

p 2ri(⊥

,1,4),

p 1ri(>

,2,3),

p 2ri(>

,2,3),

p 1ri(⊥

,2,3),

p 2ri(⊥

,2,3),

p 1ri(>

,2,4),

p 2ri(>

,2,4),

p 1ri(⊥

,2,4),

p 2ri(⊥

,2,4),

p 1ri(>

,3,4),

p 2ri(>

,3,4),

p 1ri(⊥

,3,4),

p 2ri(⊥

,3,4),

p 1sp(1)

auto

-com

p

bina

ry64

min

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 31/36

Page 97: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Résultats sur le programme HORNER

R1→ rs(⊥,9/10),p1

00.20.40.60.8

11.21.4

rs(>

,4/1

0),p

2

rs(>

,4/1

0),p

1

rs(⊥

,4/10),

p 1rs(>

,5/10),

p 2rs(>

,5/1

0),p

1

rs(⊥

,5/1

0),p

1

rs(>

,6/1

0),p

2

rs(>

,6/1

0),p

1

rs(⊥

,6/10),

p 1rs(>

,7/10),

p 2rs(>

,7/1

0),p

1

rs(⊥

,7/10),

p 1rs(>

,8/10),

p 2rs(>

,8/1

0),p

1

rs(⊥

,8/10),

p 1rs(>

,9/10),

p 2rs(>

,9/10),

p 1rs(⊥

,9/10),

p 1ri(>

,1,5),

p 2ri(>

,1,5),

p 1ri(⊥

,1,5),

p 2ri(⊥

,1,5),

p 1ri(>

,2,5),

p 2ri(>

,2,5),

p 1ri(⊥

,2,5),

p 2ri(⊥

,2,5),

p 1ri(>

,3,5),

p 2ri(>

,3,5),

p 1ri(⊥

,3,5),

p 2ri(⊥

,3,5),

p 1ri(>

,4,5),

p 2ri(>

,4,5),

p 1ri(⊥

,4,5),

p 2ri(⊥

,4,5),

p 1ri(>

,1,2),

p 2ri(>

,1,2),

p 1ri(⊥

,1,2),

p 2ri(⊥

,1,2),

p 1ri(>

,1,3),

p 2ri(>

,1,3),

p 1ri(⊥

,1,3),

p 2ri(⊥

,1,3),

p 1ri(>

,1,4),

p 2ri(>

,1,4),

p 1ri(⊥

,1,4),

p 2ri(⊥

,1,4),

p 1ri(>

,2,3),

p 2ri(>

,2,3),

p 1ri(⊥

,2,3),

p 2ri(⊥

,2,3),

p 1ri(>

,2,4),

p 2ri(>

,2,4),

p 1ri(⊥

,2,4),

p 2ri(⊥

,2,4),

p 1ri(>

,3,4),

p 2ri(>

,3,4),

p 1ri(⊥

,3,4),

p 2ri(⊥

,3,4),

p 1sp(1)

min

auto

-com

pbi

nary

64

R2→ rs(⊥,9/10),p1

00.20.40.60.8

11.21.4

rs(>

,4/1

0),p

2

rs(>

,4/1

0),p

1

rs(⊥

,4/10),

p 1rs(>

,5/10),

p 2rs(>

,5/1

0),p

1

rs(⊥

,5/1

0),p

1

rs(>

,6/1

0),p

2

rs(>

,6/1

0),p

1

rs(⊥

,6/10),

p 1rs(>

,7/10),

p 2rs(>

,7/1

0),p

1

rs(⊥

,7/10),

p 1rs(>

,8/10),

p 2rs(>

,8/1

0),p

1

rs(⊥

,8/10),

p 1rs(>

,9/10),

p 2rs(>

,9/10),

p 1rs(⊥

,9/10),

p 1ri(>

,1,5),

p 2ri(>

,1,5),

p 1ri(⊥

,1,5),

p 2ri(⊥

,1,5),

p 1ri(>

,2,5),

p 2ri(>

,2,5),

p 1ri(⊥

,2,5),

p 2ri(⊥

,2,5),

p 1ri(>

,3,5),

p 2ri(>

,3,5),

p 1ri(⊥

,3,5),

p 2ri(⊥

,3,5),

p 1ri(>

,4,5),

p 2ri(>

,4,5),

p 1ri(⊥

,4,5),

p 2ri(⊥

,4,5),

p 1ri(>

,1,2),

p 2ri(>

,1,2),

p 1ri(⊥

,1,2),

p 2ri(⊥

,1,2),

p 1ri(>

,1,3),

p 2ri(>

,1,3),

p 1ri(⊥

,1,3),

p 2ri(⊥

,1,3),

p 1ri(>

,1,4),

p 2ri(>

,1,4),

p 1ri(⊥

,1,4),

p 2ri(⊥

,1,4),

p 1ri(>

,2,3),

p 2ri(>

,2,3),

p 1ri(⊥

,2,3),

p 2ri(⊥

,2,3),

p 1ri(>

,2,4),

p 2ri(>

,2,4),

p 1ri(⊥

,2,4),

p 2ri(⊥

,2,4),

p 1ri(>

,3,4),

p 2ri(>

,3,4),

p 1ri(⊥

,3,4),

p 2ri(⊥

,3,4),

p 1sp(1)

max

auto

-com

pbi

nary

64

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 31/36

Page 98: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Résultats sur le programme HORNER

R0

25

30

35

40

45

50

55

0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45

Nombres de bits exacts

source cible

0100200300400500600700800900

1000

cyclesinstructions

instr. flot.

IPC

Mesures PAPI

bin64

52 86 33 1.65

AC

289

583

359

2.01

DD

984

743

505

0.75

R1/R2

25

30

35

40

45

50

55

0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45

Nombres de bits exacts

source cible

0100200300400500600700800900

1000

cyclesinstructions

instr. flot.

IPC

Mesures PAPI

bin64

50 86 33 1.72

AC

255

480

295

1.88

DD

984

743

505

0.75

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 31/36

Page 99: Synth¨se de code avec compromis entre performance et pr©cision

Synthèse de code pour des compromis entre précision et temps d’exécution Résultats expérimentaux

Résultats expérimentaux : synthèse

Algorithmes et donnéesRatio de sélection

R0 3/7 R1/R2 3/7

SUM(d1) auto-comp 3 ri(>,103,5 ·103),p2 7•

SUM(d2) auto-comp 3 ri(>,104,5 ·104),p2 7•

HORNER(pH ,d4) auto-comp 3 rs(>,9/10),p1 3HORNER(pH ,d5) auto-comp 3 rs(>,9/10),p2 3HORNERDER(pH ,d4) auto-comp 3 sp(1) 7•†

HORNERDER(pH ,d5) auto-comp 3 rs(>,9/10),p2 3CLENSHAWI(pC ,d4) auto-comp 3 rs(⊥,8/10),p1 3CLENSHAWI(pC ,d6) auto-comp 3 rs(>,8/10),p2 3CLENSHAWII(pC ,d4) auto-comp 3 rs(⊥,8/10),p1 3CLENSHAWII(pC ,d6) auto-comp 3 rs(>,8/10),p2 3DECASTELJAU(pD ,d8) auto-comp 3 rs(⊥,9/10),p1 7◦

DECASTELJAU(pD ,d9) auto-comp 3 rs(⊥,9/10),p1 7◦

DECASTELJAUDER(pD ,d8) auto-comp 3 rs(⊥,9/10),p1 7◦

DECASTELJAUDER(pD ,d9) auto-comp 3 rs(⊥,9/10),p1 7◦

• Échec dû au manque de précision◦ Échec dû au manque de performancesCLENSHAW : la stratégie rs(>,9/10) n’est pas retenue ici car trop proche du programme en AC† Il existe une meilleure solution qui répond avec succès : la stratégie rs(⊥,7/10),p1

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 32/36

Page 100: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Plan de l’exposé

1. Notions d’arithmétique flottante et d’amélioration de la précisionArithmétique flottante IEEE 754Transformations sans erreurArithmétique double-double et algorithmes compensés

2. Transformation automatique de programmeMise en place : l’outil CoHDMéthodologie : correction de la précisionLes transformations de la somme et du produitRésultats expérimentaux avec comparaisons à l’existant

3. Synthèse de code pour des compromis entre précision et temps d’exécutionMise en place : l’outil SyHDDes stratégies de transformation de programme avec compromisEnsemble de programme et critères de sélectionRésultats expérimentaux

4. Conclusions et perspectives

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 33/36

Page 101: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Contributions

Un nouveau moyen d’améliorer la précision

Via des transformations source-à-source :complètes résultats équivalents à ceux de la bibliographie : algorithmes compensés

• doublement de la précision• cas du raffinement itératif pour la résolution de système linéaires

partielles stratégies de transformation pour des compromis performance–précision• génération fine de code selon des attentes d’utilisateurs

Un processus d’optimisation automatique

Assuré par une implémentation logicielle de la synthèse de codeI CoHD transformation de code CI SyHD synthèse de code : objectifs d’optimisation, données, environnements

Publications

SCAN12 : Automatic Code Transformation to Optimize Accuracy and Speed in Floating-Point Arithmetic [LMT12]

SCAN10 : Trade-off Between Accuracy and Time for Automatically Generated Summation Algorithms [LMT10a]

PASCO10 : Accuracy Versus Time : A Case Study with Summation Algorithms [LMT10b]

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 34/36

Page 102: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Contributions

Un nouveau moyen d’améliorer la précision

Via des transformations source-à-source :complètes résultats équivalents à ceux de la bibliographie : algorithmes compensés

• doublement de la précision• cas du raffinement itératif pour la résolution de système linéaires

partielles stratégies de transformation pour des compromis performance–précision• génération fine de code selon des attentes d’utilisateurs

Un processus d’optimisation automatique

Assuré par une implémentation logicielle de la synthèse de codeI CoHD transformation de code CI SyHD synthèse de code : objectifs d’optimisation, données, environnements

Publications

SCAN12 : Automatic Code Transformation to Optimize Accuracy and Speed in Floating-Point Arithmetic [LMT12]

SCAN10 : Trade-off Between Accuracy and Time for Automatically Generated Summation Algorithms [LMT10a]

PASCO10 : Accuracy Versus Time : A Case Study with Summation Algorithms [LMT10b]

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 34/36

Page 103: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Contributions

Un nouveau moyen d’améliorer la précision

Via des transformations source-à-source :complètes résultats équivalents à ceux de la bibliographie : algorithmes compensés

• doublement de la précision• cas du raffinement itératif pour la résolution de système linéaires

partielles stratégies de transformation pour des compromis performance–précision• génération fine de code selon des attentes d’utilisateurs

Un processus d’optimisation automatique

Assuré par une implémentation logicielle de la synthèse de codeI CoHD transformation de code CI SyHD synthèse de code : objectifs d’optimisation, données, environnements

Publications

SCAN12 : Automatic Code Transformation to Optimize Accuracy and Speed in Floating-Point Arithmetic [LMT12]

SCAN10 : Trade-off Between Accuracy and Time for Automatically Generated Summation Algorithms [LMT10a]

PASCO10 : Accuracy Versus Time : A Case Study with Summation Algorithms [LMT10b]

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 34/36

Page 104: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Perspectives

Compléter les contributions existantes

Vers le support :I d’un ensemble plus large d’opérations : ÷,√I complet du C (boucle while, récursivité), ou autre langage

Vers de nouvelles stratégies de transformation de programme : compléter sp

Vers l’intégration de nouveaux critères d’optimisation : taille du code, consommation

Vers plus d’automatisme : gestion dynamique des stratégies de transformation

Vers une amélioration automatique de la précision non bornée : SUMK, HORNERK

Vers une application partielle des expansions

Ouverture vers d’autres domaines : temps réel, arithmétique fixe

Valorisations

Publication des résultats des derniers chapitres de la thèse

Mise en application : post-doc NUMALIS

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 35/36

Page 105: Synth¨se de code avec compromis entre performance et pr©cision

Conclusions et perspectives

Perspectives

Compléter les contributions existantes

Vers le support :I d’un ensemble plus large d’opérations : ÷,√I complet du C (boucle while, récursivité), ou autre langage

Vers de nouvelles stratégies de transformation de programme : compléter sp

Vers l’intégration de nouveaux critères d’optimisation : taille du code, consommation

Vers plus d’automatisme : gestion dynamique des stratégies de transformation

Vers une amélioration automatique de la précision non bornée : SUMK, HORNERK

Vers une application partielle des expansions

Ouverture vers d’autres domaines : temps réel, arithmétique fixe

Valorisations

Publication des résultats des derniers chapitres de la thèse

Mise en application : post-doc NUMALIS

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 35/36

Page 106: Synth¨se de code avec compromis entre performance et pr©cision

Remerciements Bibliographie

MERCI

[Dek71] T.J. DekkerA Floating-Point Technique for Extending the AvailablePrecision, 1971

[GLL09] S. Graillat, P. Langlois, N. LouvetAlgorithms for Accurate, Validated and Fast PolynomialEvaluation, 2009

[HBL01] Y. Hida, X.S. Li, D.H. Bailey.Algorithms for Quad-Double Precision Floating PointArithmetic, 2001

[IEEE754] IEEE Standard for Floating-Point ArithmeticMicroprocessor Standards Committee of the IEEEComputer Society, 3 Park Avenue, New York, NY10016-5997, USA, 2008

[Iou13] A. IoualalenTransformation de programmes synchrones pourl’optimisation de la précision numérique, 2013

[JBL11] H. Jiang, R. Barrio, H. Li, X. Liao, L. Cheng, F. SuAccurate Evaluation of a Polynomial in ChebyshevForm, 2011

[JGH13] H. Jiang, S. Graillat, C. Hu, S. Li, X. Liao, L. Chang,F. SuAccurate Evaluation of the k-th Derivative of a Polyno-mial and its Application, 2013

[JLCS10] H. Jiang, S. Li, L. Cheng, F. SuAccurate Evaluation of a Polynomial and its Derivative inBernstein Form, 2010

[Lou07] N. Louvet.Algorithmes compensés en arithmétique flottante :Précision, validation, performances, 2007

[LL07] P. Langlois, N. Louvet.More Instruction Level Parallelism Explains the ActualEfficiency of Compensated Algorithms, 2007

[LMT10a] P. Langlois, M. Martel, L. ThévenouxTrade-off Between Accuracy and Time for AutomaticallyGenerated Summation Algorithms

[LMT10b] P. Langlois, M. Martel, L. ThévenouxAccuracy Versus Time : A Case Study with SummationAlgorithms

[LMT12] P. Langlois, M. Martel, L. ThévenouxAutomatic Code Transformation to Optimize Accuracyand Speed in Floating-Point Arithmetic, 2012

[MBdD10] J.M. Muller, N. Brisebarre, F. de Dinechin,C.P. Jeannerod, V. Lefèvre, G. Melquiond, N. Revol,D. Stehlé, S. Torres.Handbook of Floating-Point Arithmetic, 2010

[MPFR] L. Fousse, G. Hanrot, V. Levèfre, P. Pélissier,P. ZimmermannMPFR : A Multiple-Precision Binary Floating-PointLibrary with Correct Rounding

[ROO05] S.M. Rump, T. Ogita, S.Oishi.Accurate Sum and Dot Product, 2005

[She97] J.R. ShewchukAdaptive Precision Floating-Point Arithmetic and FastRobust Geometric Predicates, 1997

L. THÉVENOUX (DALI UPVD/LIRMM, CNRS, UM2) Synthèse de code avec compromis entre performance et précision en arithmétique flottante IEEE 754 36/36