Automated synthesis of fast and certified code for the evaluation of polynomials,
... and sum and dot-product expressions.
CGPE is a software tool whose initial purpose is to help in synthesizing fast and certified codes for the
evaluation of univariate and bivariate polynomials, in fixed-point
arithmetic, and optimized for a specific target architecture.
So far it has been extended to handle sum and dot-product expressions.
CGPE is particularly optimized for the automatic implementation of bivariate polynomial evaluation for VLIW processors. Given the polynomial coefficients and some features of the target architecture (number of issues, number of multipliers, latency of operators), it writes and certifies automatically a C code for evaluating the considered polynomial optimized for the given target. CGPE has already been used for generating about 50 % of the codes of the FLIP library, optimized for the ST231 (4-issue VLIW embedded integer processor of the ST200 family from STMicroelectronics).
CGPE is developed by DALI project-team from Université de Perpignan Via Domitia and Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier (CNRS: UMR 5506 and UM2). Previously it was developed by the AriC (formerly Arénaire) INRIA Grenoble - Rhône-Alpes project-team from LIP laboratory at ENS-Lyon.
It is written by Guillaume Revy, Christophe Mouilleron, Amine Najahi, and Hugues de Lassus Saint-Geniè.
- Algorithms to compute all the possible parenthesizations to evaluate univariate and bivariate polynomials of given degree, together with those to evaluate sum and dot-product expressions of given size.
- Heuristics to compute parenthesizations exposing as much ILP (instruction-level parallelism) as possible.
- Backends in C langage to evaluate problems whose coefficients/variables are described in an external
- in fixed-point arithmetic using unsigned/signed integer arithmetic or ac_fixed library,
- in binary32 and binary64 floating-point arithmetic,
- in exact arithmetic using GMP (for debugging purpose, for example),
- Backend to compute a certified enclosure of the evaluation error by producing a Gappa certificate.
- Backend in synthesizable VHDL produced using FloPoCo library.
- Backend in LLVM IR (for fixed-point evaluation, only)
- Interface allowing to use CGPE in library mode.
- CGPE-2.0.0 is now available.
Instructions on how to get
it can be found on the download page.
- The current development version is available through anonymous SVN access from the INRIA-Gforge page of the project.
- The historic of the released versions of CGPE is available upon request.
- To submit a bug report, please just send an email at grevy [at] users.gforge.inria.fr.
Installation prerequisitesIn order to compile CGPE, you will need the following packages installed:
- a C++ compiler (for example, g++),
- the GNU MP library (gmp >= 5.1.1),
- the C++ bindings for the GNU MP library (gmpxx.h >= 5.1.1),
- the MPFR library (mpfr >= 3.1.1),
- the MPFI library (mpfi >= 1.5.1),
- the libxml2 library (>= 2.7.5),
- and the FloPoCo library (>= 2.4.0) together with the Sollya library (>= 3.0.0), if you expect to output VHDL description.
Documentation and examples
- An online documentation is available here.
- Examples are also given for showing how to use CGPE, especially for function and filter implementation.
- More examples can be found in the tests/ directory of CGPE.
|||Toward the synthesis of fixed-point code for matrix inversion based on Cholesky decomposition. In 6th Conference on Design and Architectures for Signal and Image Processing (DASIP 2014), Madrid, Spain, 8-10 October 2014. [BibTeX][PDF]|
|||Automated Synthesis of Target-Dependent Programs for Polynomial Evaluation in Fixed-Point Arithmetic. . In 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC 2014), Timisoara, Romania, 22-25 September 2014. [PDF][BibTeX][lirmm-00814338]|
|||Approach based on instruction selection for fast and certified code generation. In 15th GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics (SCAN'2012), Novosibirsk, Russia, 23-29 September 2012. [BibTeX][lirmm-00813055]|
|||Efficient computation with structured matrices and arithmetic expressions. Ph.D. thesis, Université de Lyon - ENS de Lyon, France, 4 November 2011. [PDF]|
|||Automatic Generation of Fast and Certified Code for Polynomial Evaluation. In E. Antelo, D. Hough, and P. Ienne, editors, 20th IEEE Symposium on Computer Arithmetic (ARITH'20), pages 233-242, Tuebingen, Germany, 25-27 July 2011. [DOI][BibTex]|
|||Implementation of binary floating-point arithmetic on embedded integer processors - Polynomial evaluation-based algorithms and certified code generation. Ph.D. thesis, Université de Lyon - ENS Lyon, France, 1 December 2009.[tel-00469661][PDF][BibTex]|
LicenseCopyright © 2007-2013 by
- Laboratoire de l'Informatique du Parallélisme, UMR CNRS - ENS Lyon - UCB Lyon 1 - INRIA 5668,
- and by
Université de Perpignan Via Domitia and Laboratoire d'Informatique, de Robotique et de Microelectronique de
Montpellier (CNRS: UMR 5506 and UM2).