FPBench makes it easier to compare and combine tools from the floating-point research community by developing common standards and benchmark suites.
The FPBench standards are documented in
www/spec/. FPBench currently
contains three standards:
- FPCore describes floating-point computations. FPCore is a simple S-expression functional programming language and can represent arithmetic, transcendental operators, loops, and conditionals.
- Metadata describe the provenance and interpretation of FPCore computations.
- Measures describe accuracy measurements for FPCore computations. Several measures are standardized.
Each standard has achieved 1.0 status and can be used by implementations.
The FPBench benchmarks are located in
benchmarks/ in FPCore format.
FPBench contains 72 benchmarks from four sources (FPTaylor, Herbie, Salsa, and Rosa) covering a variety of application domains and the full complement of FPCore features.
The FPBench tools are located in
tools/, and make it easier to
write, test, and use FPCore computations. These tools include:
fpcore.rktruns FPCore computations and can be used as a reference for FPCore implementation work.
core2c.rktexports FPCore computations to C
These tools are documented in
FPBench also ships with a set of tools based on the FPImp intermediate
language. FPImp is an imperative extension to FPCore which makes
translating C, Fortran, Matlab, or other imperative languages to
FPCore simpler. FPImp is documented in
www/fpimp.html, and FPBench
ships with tools for manipulating FPImp programs:
fpimp.rktruns FPImp programs
imp2core.rktcompiles FPImp to FPCore
We recommend using FPImp only for writing FPCore computations; FPImp is not a standard and we do not recommend using it in other tools.
Toward a Standard Benchmark Format and Suite for Floating-Point Analysis, at NSV’16, by N. Damouche, M. Martel, P. Panchekha, C. Qiu, A. Sanchez-Stern, and Z. Tatlock
Described the FPBench standards project, including the FPCore standard. The standards (in
www/spec) continue this work.
Combining Tools for Optimization and Analysis of Floating-Point Computations, at FM’18, by H. Becker, P. Panchekha, E. Darulova, and Z. Tatlock