Calcul flottant haute performance sur circuits reconfigurables

De plus en plus de constructeurs proposent des accélérateurs de calculs à base de circuits reconfigurables FPGA, cette technologie présentant bien plus de souplesse que le microprocesseur. Valoriser cette flexibilité dans le domaine de l'accélération de calcul flottant en utilisant les langages...

Full description

Bibliographic Details
Main Author: Pasca, Bogdan Mihai
Other Authors: Lyon, École normale supérieure
Language:en
Published: 2011
Subjects:
Online Access:http://www.theses.fr/2011ENSL0656/document
id ndltd-theses.fr-2011ENSL0656
record_format oai_dc
collection NDLTD
language en
sources NDLTD
topic FPGA
Virgule flottante
FloPoCo
Chemin de données arithmétique
Pipeline pour une fréquence donnée
Addition pipelinée
Additionneur rapide
Multiplication
Karatsuba-Offman
Carré
Multiplieur tronqué
Multiplication par pavage
Virgule fixe
Approximation polynomiale
Racine carrée flottante
Exponentielle flottante
Accumulation flottante
Schéma d'évaluation de Horner
Somme de carrés flottante
Synthèse de haut niveau
Nid de boucles parfait
Multiplication de matrices
Jacobi
Dilemme du fabricant de table
Méthode des différences tabulées
Communications pipelinées
FPGA
Floating-point
FloPoCo
Arithmetic datapath
Frequency-driven pipelining
Pipelined addition
Short-latency adder
Multiplication
Karatsuba-Offman
Squarer
Truncated multiplier
Multiplication tiling
Fixed-point
Polynomial approximation
Floating-point square root
Floating-point exponential
Floating-point accumulation
Horner datapath
Floating-point sum-of-products
High-level synthesis
Perfect loop nests
Matrix-matrix multiply
Jacobi stencil
Table maker's dilemma
Pipelined communications
Pipelined communications

spellingShingle FPGA
Virgule flottante
FloPoCo
Chemin de données arithmétique
Pipeline pour une fréquence donnée
Addition pipelinée
Additionneur rapide
Multiplication
Karatsuba-Offman
Carré
Multiplieur tronqué
Multiplication par pavage
Virgule fixe
Approximation polynomiale
Racine carrée flottante
Exponentielle flottante
Accumulation flottante
Schéma d'évaluation de Horner
Somme de carrés flottante
Synthèse de haut niveau
Nid de boucles parfait
Multiplication de matrices
Jacobi
Dilemme du fabricant de table
Méthode des différences tabulées
Communications pipelinées
FPGA
Floating-point
FloPoCo
Arithmetic datapath
Frequency-driven pipelining
Pipelined addition
Short-latency adder
Multiplication
Karatsuba-Offman
Squarer
Truncated multiplier
Multiplication tiling
Fixed-point
Polynomial approximation
Floating-point square root
Floating-point exponential
Floating-point accumulation
Horner datapath
Floating-point sum-of-products
High-level synthesis
Perfect loop nests
Matrix-matrix multiply
Jacobi stencil
Table maker's dilemma
Pipelined communications
Pipelined communications

Pasca, Bogdan Mihai
Calcul flottant haute performance sur circuits reconfigurables
description De plus en plus de constructeurs proposent des accélérateurs de calculs à base de circuits reconfigurables FPGA, cette technologie présentant bien plus de souplesse que le microprocesseur. Valoriser cette flexibilité dans le domaine de l'accélération de calcul flottant en utilisant les langages de description de circuits classiques (VHDL ou Verilog) reste toutefois très difficile, voire impossible parfois. Cette thèse a contribué au développement du logiciel FloPoCo, qui offre aux utilisateurs familiers avec VHDL un cadre C++ de description d'opérateurs arithmétiques génériques adapté au calcul reconfigurable. Ce cadre distingue explicitement la fonctionnalité combinatoire d'un opérateur, et la problématique de son pipeline pour une précision, une fréquence et un FPGA cible donnés. Afin de pouvoir utiliser FloPoCo pour concevoir des opérateurs haute performance en virgule flottante, il a fallu d'abord concevoir des blocs de bases optimisés. Nous avons d'abord développé des additionneurs pipelinés autour des lignes de propagation de retenue rapides, puis, à l'aide de techniques de pavages, nous avons conçu de gros multiplieurs, possiblement tronqués, utilisant des petits multiplieurs. L'évaluation de fonctions élémentaires en flottant implique souvent l'évaluation en virgule fixe d'une fonction. Nous présentons un opérateur générique de FloPoCo qui prend en entrée l'expression de la fonction à évaluer, avec ses précisions d'entrée et de sortie, et construit un évaluateur polynomial optimisé de cette fonction. Ce bloc de base a permis de développer des opérateurs en virgule flottante pour la racine carrée et l'exponentielle qui améliorent considérablement l'état de l'art. Nous avons aussi travaillé sur des techniques de compilation avancée pour adapter l'exécution d'un code C aux pipelines flexibles de nos opérateurs. FloPoCo a pu ainsi être utilisé pour implanter sur FPGA des applications complètes. === Due to their potential performance and unmatched flexibility, FPGA-based accelerators are part of more and more high-performance computing systems. However, exploiting this flexibility for accelerating floating-point computations by manually using classical circuit description languages (VHDL or Verilog) is very difficult, and sometimes impossible. This thesis has contributed to the development of the FloPoCo software, a C++ framework for describing flexible FPGA-specific arithmetic operators. This framework explicitly separates the description of the combinatorial functionality of an arithmetic operator, and its pipelining for a given precision, operating frequency and target FPGA.In order to be able to use FloPoCo for designing high performance floating-point operators, we first had to design the optimized basic blocks. We first developed pipelined addition architectures exploiting the fast-carry lines present in modern FPGAs. Next, we focused on multiplication architectures. Using tiling techniques, we proposed novel architectures for large multipliers, but also truncated multipliers, based on the multipliers found in modern FPGA DSP blocks. We also present a generic FloPoCo operator which inputs the expression of a function, its input and output precisions, and builds an optimized polynomial evaluator for the fixed-point evaluation of this function. Using this building block we have designed floating-point operators for the square-root and exponential functions which significantly outperform existing operators. Finally, we also made use of advanced compilation techniques for adapting the execution of a C program to the flexible pipelines of our operators.
author2 Lyon, École normale supérieure
author_facet Lyon, École normale supérieure
Pasca, Bogdan Mihai
author Pasca, Bogdan Mihai
author_sort Pasca, Bogdan Mihai
title Calcul flottant haute performance sur circuits reconfigurables
title_short Calcul flottant haute performance sur circuits reconfigurables
title_full Calcul flottant haute performance sur circuits reconfigurables
title_fullStr Calcul flottant haute performance sur circuits reconfigurables
title_full_unstemmed Calcul flottant haute performance sur circuits reconfigurables
title_sort calcul flottant haute performance sur circuits reconfigurables
publishDate 2011
url http://www.theses.fr/2011ENSL0656/document
work_keys_str_mv AT pascabogdanmihai calculflottanthauteperformancesurcircuitsreconfigurables
AT pascabogdanmihai highperformancefloatingpointcomputingonreconfigurablecircuits
_version_ 1718614030384365568
spelling ndltd-theses.fr-2011ENSL06562018-02-08T04:23:05Z Calcul flottant haute performance sur circuits reconfigurables High-performance floating-point computing on reconfigurable circuits FPGA Virgule flottante FloPoCo Chemin de données arithmétique Pipeline pour une fréquence donnée Addition pipelinée Additionneur rapide Multiplication Karatsuba-Offman Carré Multiplieur tronqué Multiplication par pavage Virgule fixe Approximation polynomiale Racine carrée flottante Exponentielle flottante Accumulation flottante Schéma d'évaluation de Horner Somme de carrés flottante Synthèse de haut niveau Nid de boucles parfait Multiplication de matrices Jacobi Dilemme du fabricant de table Méthode des différences tabulées Communications pipelinées FPGA Floating-point FloPoCo Arithmetic datapath Frequency-driven pipelining Pipelined addition Short-latency adder Multiplication Karatsuba-Offman Squarer Truncated multiplier Multiplication tiling Fixed-point Polynomial approximation Floating-point square root Floating-point exponential Floating-point accumulation Horner datapath Floating-point sum-of-products High-level synthesis Perfect loop nests Matrix-matrix multiply Jacobi stencil Table maker's dilemma Pipelined communications Pipelined communications De plus en plus de constructeurs proposent des accélérateurs de calculs à base de circuits reconfigurables FPGA, cette technologie présentant bien plus de souplesse que le microprocesseur. Valoriser cette flexibilité dans le domaine de l'accélération de calcul flottant en utilisant les langages de description de circuits classiques (VHDL ou Verilog) reste toutefois très difficile, voire impossible parfois. Cette thèse a contribué au développement du logiciel FloPoCo, qui offre aux utilisateurs familiers avec VHDL un cadre C++ de description d'opérateurs arithmétiques génériques adapté au calcul reconfigurable. Ce cadre distingue explicitement la fonctionnalité combinatoire d'un opérateur, et la problématique de son pipeline pour une précision, une fréquence et un FPGA cible donnés. Afin de pouvoir utiliser FloPoCo pour concevoir des opérateurs haute performance en virgule flottante, il a fallu d'abord concevoir des blocs de bases optimisés. Nous avons d'abord développé des additionneurs pipelinés autour des lignes de propagation de retenue rapides, puis, à l'aide de techniques de pavages, nous avons conçu de gros multiplieurs, possiblement tronqués, utilisant des petits multiplieurs. L'évaluation de fonctions élémentaires en flottant implique souvent l'évaluation en virgule fixe d'une fonction. Nous présentons un opérateur générique de FloPoCo qui prend en entrée l'expression de la fonction à évaluer, avec ses précisions d'entrée et de sortie, et construit un évaluateur polynomial optimisé de cette fonction. Ce bloc de base a permis de développer des opérateurs en virgule flottante pour la racine carrée et l'exponentielle qui améliorent considérablement l'état de l'art. Nous avons aussi travaillé sur des techniques de compilation avancée pour adapter l'exécution d'un code C aux pipelines flexibles de nos opérateurs. FloPoCo a pu ainsi être utilisé pour implanter sur FPGA des applications complètes. Due to their potential performance and unmatched flexibility, FPGA-based accelerators are part of more and more high-performance computing systems. However, exploiting this flexibility for accelerating floating-point computations by manually using classical circuit description languages (VHDL or Verilog) is very difficult, and sometimes impossible. This thesis has contributed to the development of the FloPoCo software, a C++ framework for describing flexible FPGA-specific arithmetic operators. This framework explicitly separates the description of the combinatorial functionality of an arithmetic operator, and its pipelining for a given precision, operating frequency and target FPGA.In order to be able to use FloPoCo for designing high performance floating-point operators, we first had to design the optimized basic blocks. We first developed pipelined addition architectures exploiting the fast-carry lines present in modern FPGAs. Next, we focused on multiplication architectures. Using tiling techniques, we proposed novel architectures for large multipliers, but also truncated multipliers, based on the multipliers found in modern FPGA DSP blocks. We also present a generic FloPoCo operator which inputs the expression of a function, its input and output precisions, and builds an optimized polynomial evaluator for the fixed-point evaluation of this function. Using this building block we have designed floating-point operators for the square-root and exponential functions which significantly outperform existing operators. Finally, we also made use of advanced compilation techniques for adapting the execution of a C program to the flexible pipelines of our operators. Electronic Thesis or Dissertation Text en http://www.theses.fr/2011ENSL0656/document Pasca, Bogdan Mihai 2011-09-21 Lyon, École normale supérieure Dupont de Dinechin, Florent