Calcul flottant haute performance sur circuits reconfigurables

Autor: Pasca, Bogdan Mihai
Jazyk: angličtina
Rok vydání: 2011
Předmět:
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
Floating-point
Arithmetic datapath
Frequency-driven pipelining
Pipelined addition
Short-latency adder
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
Druh dokumentu: Text
Popis: 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.
Databáze: Networked Digital Library of Theses & Dissertations