Leveraging Software Testing to Explore Input Dependence for Approximate Computing

With the end of Moore’s law and the shift towards alternative paradigms for energy and performance gains, approximate computing has gained considerable traction in recent years. Approximate computing environments obtain gains in performance and/or energy by trading off computational accuracy. The gains afforded by many approximation techniques are intimately coupled with the inputs provided to the program. Hence, reasoning about inputs in a systematic way is an important and open research problem. In this paper, we discuss some concerns associated with input dependence and the need to elevate program inputs to first-class citizens within the domain of approximate computing. We leverage the mature field of software testing for mechanisms and techniques to analyze program inputs and measure their influence on approximations. We believe that, going forward, software testing methodologies will become an integral part of the workflow for approximate computing-based systems.

[1]  References , 1971 .

[2]  Hong Zhu,et al.  Software unit test coverage and adequacy , 1997, ACM Comput. Surv..

[3]  Qian Yang,et al.  A survey of coverage based testing tools , 2006, AST '06.

[4]  A. Jefferson Offutt,et al.  Introduction to Software Testing , 2008 .

[5]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

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

[7]  Mark Harman,et al.  An Analysis and Survey of the Development of Mutation Testing , 2011, IEEE Transactions on Software Engineering.

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

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

[10]  John Sartori,et al.  Architecting processors to allow voltage/reliability tradeoffs , 2011, 2011 Proceedings of the 14th International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES).

[11]  Mark Harman,et al.  Regression testing minimization, selection and prioritization: a survey , 2012, Softw. Test. Verification Reliab..

[12]  Scott A. Mahlke,et al.  SAGE: Self-tuning approximation for graphics engines , 2013, 2013 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

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

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

[15]  Natalie D. Enright Jerger,et al.  Doppelgänger: A cache for approximate computing , 2015, 2015 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

[16]  Scott A. Mahlke,et al.  Rumba: An online quality management system for approximate computing , 2015, 2015 ACM/IEEE 42nd Annual International Symposium on Computer Architecture (ISCA).

[17]  Scott A. Mahlke,et al.  Input responsiveness: using canary inputs to dynamically steer approximation , 2016, PLDI.

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

[19]  Adrian Sampson The Case for Compulsory Approximation , 2016 .

[20]  Sarita V. Adve,et al.  Approxilyzer: Towards a systematic framework for instruction-level approximate computing and its application to hardware resiliency , 2016, 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

[21]  Saurabh Bagchi,et al.  Phase-aware optimization in approximate computing , 2017, 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).