Code Monkey home page Code Monkey logo

satire's Introduction

DOI

SATIRE: Scalable Abstraction-guided Technique for Incremental Rigorous analysis of round-off Errors

Satire is a first order error analysis tool for obtaining rigorous bounds on worst case floating point round-off errors. It works on straight line floating-point programs. Satire, sheds light on how scalability and bound-tightness can be attained through a combination of incremental analysis, abstraction, and judicious use of concrete and symbolic evaluation.

Please try out the web interface.

Dependencies

Satire requires the following softwares to be installed.

  • Requirements:
    • python > 3.6
    • python packages using pip3
    • gelpia (working commit ID: c28bf25593423f71ce6ef86122f2a8aa22bf0b33)
      • After installation, make gelpia/bin available in $PATH

Usage

Satire is a python based framework. The main function is available is "src/satire.py" The "--help" command clarifies all the supporting arguments

Example1 (with default options: serialized, no abstraction, no empirical analysis)

python3 src/satire.py --std --file large_benchmarks/reduction/Reduction_1024.txt

The execution generates a default.log containing logging traces of the execution for debugging. This file name can be modified using the --logfile <filename1> option.

The output is available in outfile.txt. This file name can be modified using the --outfile <filename2> option. The --std option enables logging information and results to be flushed to the standard output as well.

The contents of the outfile.txt summarizes the execution time, analysis time and absolute error bounds for the specific benchmark

INPUT_FILE : Reduction_1024.txt

//-------------------------------------
VAR : A_9_0
ABSOLUTE_ERROR : 1.2505552149377763e-12
REAL_INTERVAL : [-1024, 1024.0]
FP_INTERVAL : [-1024.0000000000014, 1024.0000000000014]
//-------------------------------------

Optimizer Calls: 0
Parsing time : 0.16805672645568848

PreProcessing time : 0.0013127326965332031
Analysis time : 29.50110626220703
Full time : 29.67192506790161

Example2 (with abstraction option)

python3 src/satire.py --std --file large_benchmarks/reduction/Reduction_1024.txt --enable-abstraction --mindepth 15 --maxdepth 25

Abstraction is by default turned off. Abstraction can be enabled using the --enable-abstraction switch. The default abstraction window inside Satire is set to (10,40). using --mindepth <lower_depth> and --maxdepth <higher_depth>, the lower bound and the upper bound of the abstraction window can be changed as desired.

Example3 (with parallelism enabled)

python3 src/satire.py --std --file large_benchmarks/reduction/Reduction_1024.txt --parallel

Using --parallel switch, the user can fork multiple optimizer calls concurrently. To enable this, Satire maintains a worklist of optimizer queries, and resorts to solving them in parallel once the worklist exceeds a certain threshold (currently set at 20). The paralleism support is enabled on top of an expression hashing mechanism that reduces query time by storing digital signatures of the already solved queries.

Example4 (with Empirical Code Analysis option)

python3 src/satire.py --std --file large_benchmarks/reduction/Reduction_1024.txt --empirical 100000000

The --empirical flag generates a C++ code for the benchmark performing shadow value analysis for single precision and double precision types. For higher precision it uses quad precision as a proxy to real numbers. The input this flag takes is an integer which denotes the number of times the shadow value analysis is performed and the code outputs the max error and the average error for the two types over all executions. The default value for this flag is 0 in which case the C++ code is not generated.

Testing

A runScipt is provided inside the directory large_benchmarks. It contains the list of all large benchmark problems that has been tested with Satire. The collect_results.py' script extracts the output information from each and aggregates into a final Results.txt'

Please make sure to modify $GPHOME inside runScript to point to Gelpia home directory. Gelpia bin directory must also be available to the PATH variable.

> cd large_benchmarks 
> bash runScript.sh 
> gvim Results.txt 

Full execution of the runScript will take few hours. Selectively, benchmarks can be commented out from runScipt as required.

Quick tests

Smaller tests for both FPtaylor and Satire are available inside the test directory. For trying out FPtaylor tests you need to install FPtaylor. Satire compatible tests are available in tests/satire-tests/.

satire's People

Contributors

arnabd88 avatar ianbriggs avatar petersp avatar tanmaytirpankar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.