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,
and Amine Najahi.
Main features
- 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
XML file:
- 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.
- Interface allowing to use CGPE in library mode.
Download
- 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 prerequisites
In 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
- A brieve online documentation is available here.
- Also, two examples are given for showing how to use CGPE: [1] - [2]. More examples can be found in the tests/ directory of the release.
Related publications
[4] | Approach based on instruction selection for fast and certified code generation. Christophe Mouilleron, Amine Najahi, and Guillaume Revy. 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] |
[3] | Efficient computation with structured matrices and arithmetic expressions. Christophe Mouilleron. PhD thesis, Université de Lyon - ENS de Lyon, France, 4 November 2011. [PDF] |
[2] | Automatic Generation of Fast and Certified Code for Polynomial Evaluation. Christophe Mouilleron and Guillaume Revy. 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] |
[1] | Implementation of binary floating-point arithmetic on embedded integer processors - Polynomial evaluation-based algorithms and certified code generation. Guillaume Revy. PhD thesis, Université de Lyon - ENS Lyon, France, 1 December 2009. [tel-00469661] [PDF] [BibTex] |
License
Copyright © 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).