PROMISE: PRecision OptiMISE

About PROMISE

Most numerical simulations are performed in double precision (IEEE754 binary64). Unfortunately this can be costly in terms of computing time, memory transfer and energy consumption.

PROMISE is a tool to auto-tune the precision of floating-point variables in code. From an initial C or C++ program and a required accuracy on the computed results, PROMISE automatically modifies the floating-point types and maximizes the number of single precision variables. To estimate the numerical quality of results, PROMISE uses CADNA which controls round-off errors in simulation programs.

PROMISE has been successfully tested on programs implementing several numerical algorithms including linear system solving and also on an industrial code that solves the neutron transport equations.

Download

Source code, documentation and example programs can be downloaded here.

Example

Results of PROMISE are shown in a simple numerical example.

Contact

If you have any feedback, bug reports or comments, please send an email to the CADNA team.

Reference

S. Graillat, F. Jézéquel, R. Picot, F. Févotte, B. Lathuilière. Auto-tuning for floating-point precision with Discrete Stochastic Arithmetic. 2016. HAL ID:hal-01331917 (pdf)