Verifying Relative Safety, Accuracy, and Termination for Program Approximations

Approximate computing is an emerging area for trading off the accuracy of an application for improved performance, lower energy costs, and tolerance to unreliable hardware. However, developers must ensure that the leveraged approximations do not introduce significant, intolerable divergence from the reference implementation, as specified by several established robustness criteria. In this work, we show the application of automated differential verification towards verifying relative safety, accuracy, and termination criteria for a class of program approximations. We use mutual summaries to express relative specifications for approximations, and SMT-based invariant inference to automate the verification of such specifications. We perform a detailed feasibility study showing promise of applying automated verification to the domain of approximate computing in a cost-effective manner.

[1]  George C. Necula,et al.  Translation validation for an optimizing compiler , 2000, PLDI '00.

[2]  Henry Hoffmann,et al.  Dynamic knobs for responsive power-aware computing , 2011, ASPLOS XVI.

[3]  Karthik Pattabiraman,et al.  LLFI : An Intermediate Code Level Fault Injector For Soft Computing Applications , 2013 .

[4]  Kenneth L. McMillan,et al.  An interpolating theorem prover , 2005, Theor. Comput. Sci..

[5]  Henry Hoffmann,et al.  Quality of service profiling , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[6]  Adrian Sampson,et al.  Hardware and Software for Approximate Computing , 2015 .

[7]  Shuvendu K. Lahiri,et al.  Towards Modularly Comparing Programs Using Automated Theorem Provers , 2013, CADE.

[8]  Nick Benton,et al.  Simple relational correctness proofs for static analyses and program transformations , 2004, POPL.

[9]  Kathryn S. McKinley,et al.  Uncertain: a first-order type for uncertain data , 2014, ASPLOS.

[10]  Lara Dolecek,et al.  Underdesigned and Opportunistic Computing in Presence of Hardware Variability , 2013, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[11]  Martin C. Rinard,et al.  Proving acceptability properties of relaxed nondeterministic approximate programs , 2012, PLDI.

[12]  Chundong Wang,et al.  ASAC: automatic sensitivity analysis for approximate computing , 2014, LCTES '14.

[13]  Shuvendu K. Lahiri,et al.  SYMDIFF: A Language-Agnostic Semantic Diff Tool for Imperative Programs , 2012, CAV.

[14]  Henry Hoffmann,et al.  Managing performance vs. accuracy trade-offs with loop perforation , 2011, ESEC/FSE '11.

[15]  Jie Han,et al.  Approximate computing: An emerging paradigm for energy-efficient design , 2013, 2013 18th IEEE European Test Symposium (ETS).

[16]  Dan Grossman,et al.  Dynamic Analysis of Approximate Program Quality , 2014 .

[17]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[18]  Michael F. Ringenburg,et al.  Profiling and Autotuning for Energy-Aware Approximate Programming , 2012 .

[19]  Shuvendu K. Lahiri,et al.  Predicate abstraction with indexed predicates , 2004, TOCL.

[20]  Zeyuan Allen Zhu,et al.  Randomized accuracy-aware program transformations for efficient approximate computations , 2012, POPL '12.

[21]  Amir Pnueli,et al.  Translation Validation , 1998, TACAS.

[22]  Shuvendu K. Lahiri,et al.  Differential assertion checking , 2013, ESEC/FSE 2013.

[23]  Luis Ceze,et al.  Hardware-Software Co-Design: Not Just a Cliché , 2015, SNAPL.

[24]  Dan Grossman,et al.  EnerJ: approximate data types for safe and general low-power computation , 2011, PLDI '11.

[25]  Ofer Strichman,et al.  Proving mutual termination , 2015, Formal Methods Syst. Des..

[26]  Clark W. Barrett,et al.  The SMT-LIB Standard Version 2.0 , 2010 .

[27]  Logan Kugler Is "good enough" computing good enough? , 2015, Commun. ACM.

[28]  Luis Ceze,et al.  Neural Acceleration for General-Purpose Approximate Programs , 2012, 2012 45th Annual IEEE/ACM International Symposium on Microarchitecture.

[29]  Martin C. Rinard,et al.  Chisel: reliability- and accuracy-aware optimization of approximate computational kernels , 2014, OOPSLA.

[30]  Ganesh Gopalakrishnan,et al.  Towards Formal Approaches to System Resilience , 2013, 2013 IEEE 19th Pacific Rim International Symposium on Dependable Computing.

[31]  Dan Grossman,et al.  Probability type inference for flexible approximate programming , 2015, OOPSLA.

[32]  Kenneth L. McMillan Lazy Annotation Revisited , 2014, CAV.

[33]  Martin C. Rinard,et al.  Verifying quantitative reliability for programs that execute on unreliable hardware , 2013, OOPSLA.

[34]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2021, Handbook of Satisfiability.

[35]  Jacob Nelson,et al.  Dense Approximate Storage in Phase-Change Memory , 2011 .

[36]  Dan Grossman,et al.  Expressing and verifying probabilistic assertions , 2014, PLDI.

[37]  K. Rustan M. Leino,et al.  Houdini, an Annotation Assistant for ESC/Java , 2001, FME.

[38]  Mayur Naik,et al.  Expectation-Oriented Framework for Automating Approximate Programming , 2013 .

[39]  Ofer Strichman,et al.  Regression verification , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[40]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[41]  Krishna V. Palem,et al.  Probabilistic Design: A Survey of Probabilistic CMOS Technology and Future Directions for Terascale IC Design , 2006, VLSI-SoC.

[42]  Xin Zhang,et al.  FlexJava: language support for safe and modular approximate programming , 2015, ESEC/SIGSOFT FSE.

[43]  Shuvendu K. Lahiri,et al.  Towards Practical Reactive Security Audit Using Extended Static Checkers , 2013, 2013 IEEE Symposium on Security and Privacy.

[44]  Woongki Baek,et al.  Green: a framework for supporting energy-conscious programming using controlled approximation , 2010, PLDI '10.

[45]  Martin Rinard,et al.  Acceptability-oriented computing , 2003, SIGP.

[46]  Vladimir Klebanov,et al.  Automating regression verification , 2014, Software Engineering & Management.

[47]  Keshav Pingali,et al.  Proactive Control of Approximate Programs , 2016, ASPLOS.