Support logiciel pour l arithmétique flottante simple précision sur processeurs entiers



Documents pareils
Exemple d implantation de fonction mathématique sur ST240

Bases de programmation. Cours 5. Structurer les données

Chapitre 10 Arithmétique réelle

Structure fonctionnelle d un SGBD

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Conversion d un entier. Méthode par soustraction

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Rappels Entrées -Sorties

Architecture des ordinateurs

Architecture matérielle des systèmes informatiques

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

as Architecture des Systèmes d Information

La mémoire. Un ordinateur. L'octet. Le bit

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

ALGORITHMIQUE ET PROGRAMMATION En C

Informatique Générale

Logiciel de Base. I. Représentation des nombres


Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

CM2 L architecture MIPS32

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Notion de base de données

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TP, première séquence d exercices.

Compilation (INF 564)

Création et Gestion des tables

1/ Présentation de SQL Server :

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

UE Programmation Impérative Licence 2ème Année

Licence Sciences et Technologies Examen janvier 2010

Chap III : Les tableaux

Architecture des ordinateurs

Chapitre VI- La validation de la composition.

Plan du cours. Historique du langage Nouveautés de Java 7

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Diagrammes de Package, de déploiement et de composants UML

V- Manipulations de nombres en binaire

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Machines virtuelles Cours 1 : Introduction

Claude Delannoy. 3 e édition C++

Introduction au langage C

Projet Active Object

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Conservation des documents numériques

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Programmation Bas Niveau

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

AutoForm plus R6 : Besoins systèmes

Maple: premiers calculs et premières applications

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Calcul scientifique précis et efficace sur le processeur CELL

Plan du cours Cours théoriques. 29 septembre 2014

Chp. 4. Minimisation d une fonction d une variable

Calculateur quantique: factorisation des entiers

Présentation du langage et premières fonctions

Représentation d un nombre en machine, erreurs d arrondis

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

UE C avancé cours 1: introduction et révisions

Introduction à Eclipse

I00 Éléments d architecture

Tests de performance du matériel

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Extensions, Documentation, Tutoriels, Astuces

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithmique et Programmation, IMA

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

TP 1. Prise en main du langage Python

EIP 2012 Projet Livepad. Documentation technique 1.5

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Annexe : La Programmation Informatique

Introduction à l Informatique licence 1 ère année Notes de Cours

2 Comment fonctionne un ordinateur, dans les grandes lignes

Algorithmique, Structures de données et langage C

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Import automatique des places de parking - Handicap.fr

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

Le langage C. Séance n 4

PLAN DE FORMATION TECHNICIEN(NE) D'ASSISTANCE EN INFORMATIQUE TAI

IV- Comment fonctionne un ordinateur?

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Généralités sur le Langage Java et éléments syntaxiques.

Programmation C. Apprendre à développer des programmes simples dans le langage C

L informatique en BCPST

Le langage C. Introduction, guide de reference

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours Informatique Master STEP

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

I. Introduction aux fonctions : les fonctions standards

De l arithmétique d intervalles à la certification de programmes

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Introduction à NetCDF

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation en Java IUT GEII (MC-II1) 1

ELP 304 : Électronique Numérique. Cours 1 Introduction

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Transcription:

Support logiciel pour l arithmétique flottante simple précision sur processeurs entiers Guillaume Revy Encadrants : Claude-Pierre Jeannerod et Gilles Villard Équipe INRIA Arénaire Laboratoire de l Informatique du Parallélisme - ENS Lyon Groupe de travail Méthodes Ensemblistes pour l Automatique ENSAM - Paris, 22 novembre 2007 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 1/28

Introduction Systèmes embarqués pour l audio et la vidéo traitement du signal, de l image, HD-IPTV, téléphonie mobile,... Utilisation de processeurs entiers : pas d unité flottante (FPU) diminution des coûts : petite surface rapidité / faible consommation d énergie Calcul entier ou virgule fixe Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 2/28

Introduction Systèmes embarqués pour l audio et la vidéo traitement du signal, de l image, HD-IPTV, téléphonie mobile,... Utilisation de processeurs entiers : pas d unité flottante (FPU) diminution des coûts : petite surface rapidité / faible consommation d énergie Calcul entier ou virgule fixe Mise à l échelle flottant entier/virgule fixe coûteuse / délicate (perte de précision) Émulation d une couche d arithmétique flottante efficace Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 2/28

Introduction Processeurs entiers (opérations entières : addition, multiplication, décalage...) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 3/28

Introduction Applications qui manipulent des nombres flottants Processeurs entiers (opérations entières : addition, multiplication, décalage...) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 3/28

Introduction Applications qui manipulent des nombres flottants valeurs flottantes manipulées FLIP (support logiciel pour l arithmétique flottante) opérations entières Processeurs entiers (opérations entières : addition, multiplication, décalage...) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 3/28

Contexte et objectifs Contexte Support logiciel pour l arithmétique flottante simple précision (IEEE-754) aux processeurs entiers (FLIP) https://lipforge.ens-lyon.fr/projects/flip/ Fonctions mathématiques rapides et précises +,,, /,, 1/,... Collaboration avec STMicroelectronics Compilation Expertise Centre (Grenoble) FLIP : développée et optimisée pour les processeurs de la famille ST200 utiliser au mieux l architecture disponible Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 4/28

Contexte et objectifs Objectifs pour chaque fonction de FLIP Qualité visée : arrondi correct au plus près, sans nombres dénormalisés Impact dû à l ajout d autre modes d arrondi à la prise en compte des nombres dénormalisés Extension à d autres formats : medium/high precision (OpenGL ES) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 5/28

Plan de l exposé Développement et utilisation de la bibliothèque FLIP Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 6/28

Plan de l exposé Développement et utilisation de la bibliothèque FLIP Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 7/28

Bibliothèque FLIP Support logiciel pour l arithmétique flottante simple précision (IEEE-754) émulation d une couche flottante Bibliothèque développée en langage C standard nécessité d un compilateur C Ensemble de fonctions avec ou sans nombres dénormalisés, correctement arrondies suivant les 4 modes d arrondi (au plus près, vers, vers + et vers 0) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 8/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Utilisation de la bibliothèque FLIP Application utilisant l arithmétique flottante simple précision (IEEE-754) +,,, / flip add, flip sqrt... Transformation des opérations en fonctions ie : transformation de + en un appel à adds (sur ST200) Conversion des nombres flottants vers leur représentation binaire FLIP : appel aux fonctions entières de la bibliothèque ie : float32 flip sqrt float32 Processeurs entiers manipulation d opérations entières : addition, multiplication, décalage,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 9/28

Nombres flottants et représentation binaire Soit x un nombre flottant simple précision normalisé : x = ( 1) s 2 e m, avec : s {0, 1}, e Z [ 126, 127] et E = e + 127 Z [1, 254], m = 1.f 1f 2f 3... f 23 [1, 2). Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 10/28

Nombres flottants et représentation binaire Soit x un nombre flottant simple précision normalisé : x = ( 1) s 2 e m, avec : s {0, 1}, e Z [ 126, 127] et E = e + 127 Z [1, 254], m = 1.f 1f 2f 3... f 23 [1, 2). s E 7 E 6 E 5 E 4 E 3 E 2 E 1 E 0 f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 f 10 f 11 f 12 f 13 f 14 f 15 f 16 f 17 f 18 f 19 f 20 f 21 f 22 f 23 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 10/28

Nombres flottants et représentation binaire Soit x un nombre flottant simple précision dénormalisé : x = ( 1) s 2 e m, avec : s {0, 1}, e = 127 et E = e + 127 = 0, m = 0.f 1f 2f 3... f 23 [0, 1). Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 10/28

Nombres flottants et représentation binaire Soit x un nombre flottant simple précision dénormalisé : x = ( 1) s 2 e m, avec : s {0, 1}, e = 127 et E = e + 127 = 0, m = 0.f 1f 2f 3... f 23 [0, 1). s 0 0 0 0 0 0 0 0 f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 f 10 f 11 f 12 f 13 f 14 f 15 f 16 f 17 f 18 f 19 f 20 f 21 f 22 f 23 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 10/28

Développement de fonctions dans FLIP Extraction des différents composants : signe / exposant / mantisse stockage dans des registres 32 bits Interprétation des différentes valeurs en virgule fixe 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.5 dans le format Q1.31 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 11/28

Développement de fonctions dans FLIP Extraction des différents composants : signe / exposant / mantisse stockage dans des registres 32 bits Interprétation des différentes valeurs en virgule fixe 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.0 dans le format Q3.29 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 11/28

Développement de fonctions dans FLIP Extraction des différents composants : signe / exposant / mantisse stockage dans des registres 32 bits Interprétation des différentes valeurs en virgule fixe 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.0 dans le format Q3.29 Manipulation des différentes valeurs en virgule fixe via les opérations entières Exemple détaillé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 11/28

Plan de l exposé Développement et utilisation de la bibliothèque FLIP Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 12/28

Méthode générale Soit x un nombre flottant simple précision normalisé positif : x = m 2 e, avec m = 1.f 1f 2f 3... f 23 [1, 2), et e Z [ 126, 127]. x = ( m m 2 2 e 2 2 e si e est pair, = 2m 2 2 e si e est impair. Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 13/28

Méthode générale Soit x un nombre flottant simple précision normalisé positif : x = m 2 e, avec m = 1.f 1f 2f 3... f 23 [1, 2), et e Z [ 126, 127]. x = ( m m 2 2 e 2 2 e si e est pair, = 2m 2 2 e si e est impair. Finalement : x = l 2 d, avec l = ϕ m, ϕ {1, 2} et d = e 2. Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 13/28

Méthode générale Soit x un nombre flottant simple précision normalisé positif : x = m 2 e, avec m = 1.f 1f 2f 3... f 23 [1, 2), et e Z [ 126, 127]. x = ( m m 2 2 e 2 2 e si e est pair, = 2m 2 2 e si e est impair. Finalement : x = l 2 d, avec l = ϕ m, ϕ {1, 2} et d = e 2. Avantage : pas de renormalisation en arrondi au plus près m [1, 2) donc `ϕ m [1, 2) ( x) = `ϕ m 2 d Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 13/28

Principales étapes Entrée : un nombre flottant x simple précision normalisé ou une valeur spéciale, dans un registre 32 bits. x = m 2 e ou x {, x < 0, 0, +0, +, NaN} Calcul de (ϕ m) Calcul de d Traitement des valeurs spéciales Normalisation RU r = ( x) = (ϕ m) 2 d ou r { 0, +0, +, NaN} Sortie : arrondi correct au plus près de x, ou une exception. Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 14/28

Quelle méthode utiliser pour calculer ϕ m? Méthodes directes restaurante / non-restaurante 1 bit du résultat calculé à chaque itération : 24 itérations méthodes lentes Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 15/28

Quelle méthode utiliser pour calculer ϕ m? Méthodes directes restaurante / non-restaurante 1 bit du résultat calculé à chaque itération : 24 itérations méthodes lentes Méthodes itératives Newton-Raphson / Goldschmidt première approximation de m ou 1 m en gros, la précision double à chaque itération version précédente de FLIP : 1 itération de Goldschmidt Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 15/28

Quelle méthode utiliser pour calculer ϕ m? Méthodes directes restaurante / non-restaurante 1 bit du résultat calculé à chaque itération : 24 itérations méthodes lentes Méthodes itératives Newton-Raphson / Goldschmidt première approximation de m ou 1 m en gros, la précision double à chaque itération version précédente de FLIP : 1 itération de Goldschmidt Autres méthodes méthodes SRT, approximations par série entière,... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 15/28

Quelle méthode utiliser pour calculer ϕ m? Méthodes directes restaurante / non-restaurante 1 bit du résultat calculé à chaque itération : 24 itérations méthodes lentes Méthodes itératives Newton-Raphson / Goldschmidt première approximation de m ou 1 m en gros, la précision double à chaque itération version précédente de FLIP : 1 itération de Goldschmidt Autres méthodes méthodes SRT, approximations par série entière,... Notre approche méthode à base d évaluation polynomiale approximation de m par un polynôme de degré 8 évaluation du polynôme avec un schéma rapide Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 15/28

Approximation de m pour m [1, 2) Pour m [1, 2), m = 1 + t avec t [0, 1). 1.45 1.4 1.35 1.3 1.25 1.2 1.15 1.1 1.05 1 0.95 0 0.2 0.4 0.6 0.8 1 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 16/28

Approximation de m pour m [1, 2) Pour m [1, 2), m = 1 + t avec t [0, 1). 1.45 1.4 1.35 1.3 approximation de 1 + t par a(t), pour t [0, 1) a(t) : polynôme de degré 8 obtenu avec un minimax (tronqué) 1.25 1.2 1.15 1.1 1.05 1 0.95 0 0.2 0.4 0.6 0.8 1 Cf. travaux de N. Brisebarre, S. Chevillard, C. Lauter, JM. Muller et S. Torres (Équipe INRIA Arénaire) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 16/28

Approximation de m pour m [1, 2) Pour m [1, 2), m = 1 + t avec t [0, 1). 1.45 1.4 1.35 1.3 1.25 1.2 1.15 approximation de 1 + t par a(t), pour t [0, 1) a(t) : polynôme de degré 8 obtenu avec un minimax (tronqué) coefficients structurés : a 0 = 1 a 1 = 1/2 a 8 = 1/2 10 1.1 1.05 1 0.95 0 0.2 0.4 0.6 0.8 1 Cf. travaux de N. Brisebarre, S. Chevillard, C. Lauter, JM. Muller et S. Torres (Équipe INRIA Arénaire) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 16/28

Approximation de m pour m [1, 2) Pour m [1, 2), m = 1 + t avec t [0, 1). approximation de 1 + t par a(t), pour t [0, 1) 1.45 1.4 1.35 1.3 1.25 1.2 1.15 a(t) : polynôme de degré 8 obtenu avec un minimax (tronqué) coefficients structurés : a 0 = 1 a 1 = 1/2 a 8 = 1/2 10 1.1 1.05 1 0.95 0 0.2 0.4 0.6 0.8 1 erreur d approximation pour tout t [0, 1) δ(t)= a(t) 1 + t < 2 26.8 Cf. travaux de N. Brisebarre, S. Chevillard, C. Lauter, JM. Muller et S. Torres (Équipe INRIA Arénaire) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 16/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition h Schéma de Horner ϕa(t) = ϕ `(a i 8t + a 7)t + a 6... t + a 0 schéma séquentiel Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition h Schéma de Horner ϕa(t) = ϕ `(a i 8t + a 7)t + a 6... t + a 0 schéma séquentiel Voie 1 Voie 2 Voie 3 Voie 4 cycle 1 a 8 t cycle 2 cycle 3 cycle 4 a 8t + a 7 cycle 5 (a 8t + a 7) t cycle 6 cycle 7 cycle 8 (a 8t + a 7) t + a 6 cycle 9... Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition h Schéma de Horner ϕa(t) = ϕ `(a i 8t + a 7)t + a 6... t + a 0 schéma séquentiel Voie 1 Voie 2 Voie 3 Voie 4 cycle 1 a 8 t cycle 2 a 8t + a 7 cycle 3 (a 8t + a 7) t cycle 4 cycle 5 cycle 6 (a 8t + a 7) t + a 6 cycle 7... cycle 8 cycle 9 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition h Schéma de Horner ϕa(t) = ϕ `(a i 8t + a 7)t + a 6... t + a 0 schéma séquentiel utilisation d une seule des 4 voies latence = 29 cycles Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Quel schéma utiliser pour évaluer ϕa(t) sur ST231? Quelques caractéristiques VLIW 4 voies 4 opérations/cycle (ou 2 multiplications) latences : 3 cycles/multiplication et 1 cycle/addition h Schéma de Horner ϕa(t) = ϕ `(a i 8t + a 7)t + a 6... t + a 0 Schéma rapide proposé schéma séquentiel utilisation d une seule des 4 voies latence = 29 cycles coefficients positifs et valeurs intermédiaires positives incorporation de la multiplication par ϕ et ajout de 2 25 (utile pour l arrondi) ϕa(t)+2 25 = `ϕ(a0 +a 1 t)+2 25 `(a 2 a 3 t)+(a 4 a 5 t)t 2 ϕt 2 `(a6 a 7 t)+(a 8 t 2 ) t 4 ϕt 2 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 17/28

Ordonnancement du schéma d évaluation sur ST231 ϕa(t)+2 25 = `ϕ(a0 +a 1 t)+2 25 `(a 2 a 3 t)+(a 4 a 5 t)t 2 ϕt 2 `(a6 a 7 t)+(a 8 t 2 ) t 4 ϕt 2 Voie 1 Voie 2 Voie 3 Voie 4 cycle 1 t 2 = t t a 5 t cycle 2 a 7 t a 1 t cycle 3 a 3 t cycle 4 t 4 = t 2 t 2 a 45 = a 4 a 5t cycle 5 a 45 t 2 a 8 t 2 a 67 = a 6 a 7t cycle 6 a 01 = a 0 + a 1t ϕ t 2 a 68 = a 67 + a 8t 2 cycle 7 a 23 = a 2 a 3t a 68 t 4 cycle 8 a 01 ϕ a 25 = a 23 + a 45t 2 cycle 9 a 25 ϕt 2 cycle 10 (a 68t 4 ) ϕt 2 cycle 11 a 01 = a01ϕ + 2 25 cycle 12 a 05 = a 01 a25ϕt2 cycle 13 ϕa(t) = a 05 (a 68t 4 )ϕt 2 Évaluation en 13 cycles ( 2.2 fois plus rapide que Horner) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 18/28

Ordonnancement du schéma d évaluation sur ST231 ϕa(t)+2 25 = `ϕ(a0 +a 1 t)+2 25 `(a 2 a 3 t)+(a 4 a 5 t)t 2 ϕt 2 `(a6 a 7 t)+(a 8 t 2 ) t 4 ϕt 2 Voie 1 Voie 2 Voie 3 Voie 4 cycle 1 t 2 = t t a 5 t cycle 2 a 7 t a 1 t cycle 3 a 3 t cycle 4 t 4 = t 2 t 2 a 45 = a 4 a 5t cycle 5 a 45 t 2 a 8 t 2 a 67 = a 6 a 7t cycle 6 a 01 = a 0 + a 1t ϕ t 2 a 68 = a 67 + a 8t 2 cycle 7 a 23 = a 2 a 3t a 68 t 4 cycle 8 a 01 ϕ a 25 = a 23 + a 45t 2 cycle 9 a 25 ϕt 2 cycle 10 (a 68t 4 ) ϕt 2 cycle 11 a 01 = a01ϕ + 2 25 cycle 12 a 05 = a 01 a25ϕt2 cycle 13 ϕa(t) = a 05 (a 68t 4 )ϕt 2 Évaluation en 13 cycles ( 2.2 fois plus rapide que Horner) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 18/28

Comment vérifier l arrondi correct? Méthode 1 Validation a priori erreur d approximation (Sollya 1 ) erreur d évaluation (Gappa 2 ) preuve sur papier des méthodes d arrondi Méthode 2 Validation a posteriori tests exhaustifs envisageable uniquement pour les fonctions univariées 1 Sollya : https://gforge.inria.fr/projects/sollya/ 2 Gappa : http://lipforge.ens-lyon.fr/www/gappa/ Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 19/28

Performances sur ST231 Pour toute entrée x (valeurs spéciales comprises) : RN RU RD/RZ Sans dénormalisés 22 22 22 Avec dénormalisés 25 25 25 TAB.: Timings (cycles) sur ST231, suivant différents modes d arrondi Accélération 55% par rapport à la version précédente de FLIP Même latence pour les quatre modes d arrondi Surcoût dû à la prise en compte des nombres dénormalisés = 3 cycles (2 cycles en théorie) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 20/28

Performances sur ST231 Pour toute entrée x (valeurs spéciales comprises) : RN RU RD/RZ Sans dénormalisés 22 22 22 Avec dénormalisés 25 25 25 TAB.: Timings (cycles) sur ST231, suivant différents modes d arrondi Accélération 55% par rapport à la version précédente de FLIP Même latence pour les quatre modes d arrondi Surcoût dû à la prise en compte des nombres dénormalisés = 3 cycles (2 cycles en théorie) Méthode facilement adaptable : à l arrondi fidèle (RF), mais polynôme trop précis à d autres formats (medium/high precision) Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 20/28

Plan de l exposé Développement et utilisation de la bibliothèque FLIP Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 21/28

FLIP 1.0 Fonctions correctement arrondies suivant les 4 modes d arrondis, avec ou sans nombres dénormalisés : x, 1 x, x 1 2, x 1 4 Fonction correctement arrondie au plus près, sans nombres dénormalisés : x y Timings sur ST231 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 22/28

FLIP 1.0 Fonctions correctement arrondies suivant les 4 modes d arrondis, avec ou sans nombres dénormalisés : x, 1 x, x 1 2, x 1 4 Fonction correctement arrondie au plus près, sans nombres dénormalisés : x y Timings sur ST231 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 22/28

FLIP 1.0 Fonctions correctement arrondies suivant les 4 modes d arrondis, avec ou sans nombres dénormalisés : x, 1 x, x 1 2, x 1 4 Fonction correctement arrondie au plus près, sans nombres dénormalisés : x y Timings sur ST231 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 22/28

FLIP 1.0 Fonctions correctement arrondies suivant les 4 modes d arrondis, avec ou sans nombres dénormalisés : x, 1 x, x 1 2, x 1 4 Fonction correctement arrondie au plus près, sans nombres dénormalisés : x y Timings sur ST231 Addition / Soustraction / Multiplication : disponible dans FLIP-0.3 Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 22/28

FLIP 1.0 Fonctions correctement arrondies suivant les 4 modes d arrondis, avec ou sans nombres dénormalisés : x, 1 x, x 1 2, x 1 4 Fonction correctement arrondie au plus près, sans nombres dénormalisés : x y Timings sur ST231 Addition / Soustraction / Multiplication : disponible dans FLIP-0.3 + Évaluation de toutes ces fonctions suivant le même schéma Mode d arrondi et prise en compte des dénormalisés = statiques utilisation d options de compilation Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 22/28

Plan de l exposé Développement et utilisation de la bibliothèque FLIP Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 23/28

Résumé de l approche Comment implanter une fonction? Calculer les coefficients d un bon polynôme d approximation quelle fonction sur quel intervalle? quel degré? quelle structure de coefficients? Proposer un code d évaluation de ce polynôme en virgule fixe quel degré de parallélisme? quelles latences? quel schéma d évaluation? analyse numérique du schéma d évaluation avec Gappa Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 24/28

Résumé de l approche Comment implanter une fonction? Calculer les coefficients d un bon polynôme d approximation quelle fonction sur quel intervalle? quel degré? quelle structure de coefficients? Proposer un code d évaluation de ce polynôme en virgule fixe quel degré de parallélisme? quelles latences? quel schéma d évaluation? analyse numérique du schéma d évaluation avec Gappa BESOIN D AUTOMATISATION Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 24/28

Vers l automatisation de la conception d une fonction Spécifications de la cible nombre de voies (parallélisme) nombre d opérations par cycle latence des opérations (+, ) taille des registres Spécifications de l arithmétique virgule fixe/flottante précision p / mode d arrondi Générateur de schéma (et code associé) pour l évaluation de a Polynôme d approximation a degré n du polynôme intervalle d évaluation erreur d approximation coefficients a i (0 i n) Schéma d évaluation + Code C Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 25/28

Vers l automatisation de la conception d une fonction Spécifications de la cible nombre de voies (parallélisme) nombre d opérations par cycle latence des opérations (+, ) taille des registres Spécifications de l arithmétique virgule fixe/flottante précision p / mode d arrondi Générateur de schéma (et code associé) pour l évaluation de a Polynôme d approximation a degré n du polynôme intervalle d évaluation erreur d approximation coefficients a i (0 i n) Détermination de tous les schémas d évaluation pour un polynôme de degré n (ou lecture dans un dictionnaire) Schéma d évaluation + Code C Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 25/28

Vers l automatisation de la conception d une fonction Spécifications de la cible nombre de voies (parallélisme) nombre d opérations par cycle latence des opérations (+, ) taille des registres Spécifications de l arithmétique virgule fixe/flottante précision p / mode d arrondi Générateur de schéma (et code associé) pour l évaluation de a Polynôme d approximation a degré n du polynôme intervalle d évaluation erreur d approximation coefficients a i (0 i n) Détermination d un meilleur ordonnancement sur la cible Détermination de tous les schémas d évaluation pour un polynôme de degré n (ou lecture dans un dictionnaire) pour chaque schéma d évaluation Optimisation (structure de coefficients,...) Validation Schéma d évaluation + Code C un meilleur schéma d évaluation Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 25/28

Conclusions Support logiciel pour l arithmétique flottante simple précision pour processeurs entiers : bibliothèque FLIP https://lipforge.ens-lyon.fr/projects/flip/ Ensemble de fonctions algébriques correctement arrondies, avec ou sans nombres dénormalisés Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 26/28

Conclusions Support logiciel pour l arithmétique flottante simple précision pour processeurs entiers : bibliothèque FLIP https://lipforge.ens-lyon.fr/projects/flip/ Ensemble de fonctions algébriques correctement arrondies, avec ou sans nombres dénormalisés Implantation de toutes les fonctions sur le même schéma : à base d évaluation polynomiale Efficace sur ST231 : accélération de 50% pour la plupart des fonctions Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 26/28

Conclusions Support logiciel pour l arithmétique flottante simple précision pour processeurs entiers : bibliothèque FLIP https://lipforge.ens-lyon.fr/projects/flip/ Ensemble de fonctions algébriques correctement arrondies, avec ou sans nombres dénormalisés Implantation de toutes les fonctions sur le même schéma : à base d évaluation polynomiale Efficace sur ST231 : accélération de 50% pour la plupart des fonctions Besoin d automatiser la conception : des schémas d évaluation et des procédures d arrondi, et plus généralement de fonctions. Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 26/28

Exemple détaillé Calcul de ( 17) : 17 = 1.0625 2 4 Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sortie ` x 0 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de l exposant du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 Sortie ` x 0 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de l exposant du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 E + 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 Sortie ` x 0 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de l exposant du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 E + 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 D = E+127 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 Sortie ` x 0 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de l exposant du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 E + 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 D = E+127 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 Sortie ` x 0 1 0 0 0 0 0 0 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de la fraction du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de la fraction du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de la fraction du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 v 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de la fraction du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 v 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 (ϕ m) 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de la fraction du résultat Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 v 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 (ϕ m) 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Exemple détaillé Calcul de ( 17) : 17 = 1.0625 2 4 Entrée x = 17 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sortie ` x 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 4.123105... ( 17) Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 27/28

Timings pour d autres fonctions Sans dénormalisés Avec dénormalisés FLIP 0.3 FLIP 1.0 Accélération FLIP 1.0 Surcoût x 48 22 55% 25 3 x 1 2 60 29 52% 31 2 x 1 4 36 38 2 1/x 45 22 51% 29 7 x/y 50 37 26% TAB.: Timings en arrondi au plus près sur ST231 Retour à l exposé Groupe de travail Méthodes Ensemblistes pour l Automatique FLIP Floating-Point Library for Integer Processors 28/28