skip to main content
survey
Public Access

A Survey of Techniques for Approximate Computing

Published: 18 March 2016 Publication History

Abstract

Approximate computing trades off computation quality with effort expended, and as rising performance demands confront plateauing resource budgets, approximate computing has become not merely attractive, but even imperative. In this article, we present a survey of techniques for approximate computing (AC). We discuss strategies for finding approximable program portions and monitoring output quality, techniques for using AC in different processing units (e.g., CPU, GPU, and FPGA), processor components, memory technologies, and so forth, as well as programming frameworks for AC. We classify these techniques based on several key characteristics to emphasize their similarities and differences. The aim of this article is to provide insights to researchers into working of AC techniques and inspire more efforts in this area to make AC the mainstream computing approach in future systems.

References

[1]
Ismail Akturk, Karen Khatamifard, and Ulya R. Karpuzcu. 2015. On quantification of accuracy loss in approximate computing. Workshop on Duplicating, Deconstructing and Debunking.
[2]
Carlos Alvarez, Jesus Corbal, and Mateo Valero. 2005. Fuzzy memoization for floating-point multimedia applications. IEEE Transactions on Computers 54, 7, 922--927.
[3]
Renée St. Amant, Amir Yazdanbakhsh, Jongse Park, Bradley Thwaites, Hadi Esmaeilzadeh, Arjang Hassibi, Luis Ceze, and Doug Burger. 2014. General-purpose code acceleration with limited-precision analog computation. In International Symposium on Computer Architecture. 505--516.
[4]
Mohammad Ashraful Anam, Paul Whatmough, and Yiannis Andreopoulos. 2013. Precision-energy-throughput scaling of generic matrix multiplication and discrete convolution kernels via linear projections. In Symposium on Embedded Systems for Real-time Multimedia (ESTIMedia’13). 21--30.
[5]
Jason Ansel, Yee Lok Wong, Cy Chan, Marek Olszewski, Alan Edelman, and Saman Amarasinghe. 2011. Language and compiler support for auto-tuning variable-accuracy algorithms. In International Symposium on Code Generation and Optimization. 85--96.
[6]
Woongki Baek and Trishul M. Chilimbi. 2010. Green: A framework for supporting energy-conscious programming using controlled approximation. In ACM SIGPLAN Notices, Vol. 45. 198--209.
[7]
James Bornholt, Todd Mytkowicz, and Kathryn S. McKinley. 2014. Uncertain <T> : A first-order type for uncertain data. ACM SIGARCH Computer Architecture News 42, 1, 51--66.
[8]
Surendra Byna, Jiayuan Meng, Anand Raghunathan, Srimat Chakradhar, and Srihari Cadambi. 2010. Best-effort semantic document search on GPUs. In General-Purpose Computation on Graphics Processing Units. 86--93.
[9]
Michael Carbin, Sasa Misailovic, and Martin C. Rinard. 2013. Verifying quantitative reliability for programs that execute on unreliable hardware. In ACM SIGPLAN Notices, Vol. 48. 33--52.
[10]
Srimat T. Chakradhar and Anand Raghunathan. 2010. Best-effort computing: Re-thinking parallel software and hardware. In Design Automation Conference. 865--870.
[11]
Vinay K. Chippa, Srimat T. Chakradhar, Kaushik Roy, and Anand Raghunathan. 2013. Analysis and characterization of inherent application resilience for approximate computing. In Design Automation Conference. 113.
[12]
Vinay K. Chippa, Debabrata Mohapatra, Kaushik Roy, Srimat T. Chakradhar, and Anand Raghunathan. 2014. Scalable effort hardware design. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 22, 9, 2004--2016.
[13]
Kyungsang Cho, Yongjun Lee, Young H. Oh, Gyoo-cheol Hwang, and Jae W. Lee. 2014. eDRAM-based tiered-reliability memory with applications to low-power frame buffers. In International Symposium on Low Power Electronics and Design. 333--338.
[14]
Zidong Du, Avinash Lingamneni, Yunji Chen, Krishna Palem, Olivier Temam, and Chengyong Wu. 2014. Leveraging the error resilience of machine-learning applications for designing highly energy efficient accelerators. In Asia and South Pacific Design Automation Conference (ASP-DAC’14). 201--206.
[15]
Peter Düben, Jeremy Schlachter, Parishkrati, Sreelatha Yenugula, John Augustine, Christian Enz, K. Palem, and T. N. Palmer. 2015. Opportunities for energy efficient computing: A study of inexact general purpose processors for high-performance and big-data applications. In Design, Automation & Test in Europe. 764--769.
[16]
Schuyler Eldridge, Florian Raudies, David Zou, and Ajay Joshi. 2014. Neural network-based accelerators for transcendental function approximation. In Great Lakes Symposium on VLSI. 169--174.
[17]
Hadi Esmaeilzadeh, Adrian Sampson, Luis Ceze, and Doug Burger. 2012a. Architecture support for disciplined approximate programming. In ACM SIGPLAN Notices, Vol. 47. 301--312.
[18]
Hadi Esmaeilzadeh, Adrian Sampson, Luis Ceze, and Doug Burger. 2012b. Neural acceleration for general-purpose approximate programs. In IEEE/ACM International Symposium on Microarchitecture. 449--460.
[19]
Yuntan Fang, Huawei Li, and Xiaowei Li. 2012. SoftPCM: Enhancing energy efficiency and lifetime of phase change memory in video applications via approximate write. In IEEE Asian Test Symposium (ATS). 131--136.
[20]
Shrikanth Ganapathy, Georgios Karakonstantis, Adam Shmuel Teman, and Andreas Peter Burg. 2015. Mitigating the impact of faults in unreliable memories for error-resilient applications. In Design Automation Conference.
[21]
John Gantz and David Reinsel. 2011. Extracting Value from Chaos. Retrieved February 25, 2016 from http://www.emc.com/collateral/analyst-reports/idc-extracting-value-from-chaos-ar.pdf.
[22]
Íñigo Goiri, Ricardo Bianchini, Santosh Nagarakatte, and Thu D. Nguyen. 2015. ApproxHadoop: Bringing approximations to MapReduce frameworks. In International Conference on Architectural Support for Programming Languages and Operating Systems. 383--397.
[23]
Beayna Grigorian, Nazanin Farahpour, and Glenn Reinman. 2015. BRAINIAC: Bringing reliable accuracy into neurally-implemented approximate computing. In International Symposium on High Performance Computer Architecture (HPCA’15). 615--626.
[24]
Beayna Grigorian and Glenn Reinman. 2014. Dynamically adaptive and reliable approximate computing using light-weight error analysis. In Conference on Adaptive Hardware and Systems (AHS’14). 248--255.
[25]
Beayna Grigorian and Glenn Reinman. 2015. Accelerating divergent applications on SIMD architectures using neural networks. ACM Transactions on Architecture and Code Optimization (TACO) 12, 1, 2.
[26]
Vaibhav Gupta, Debabrata Mohapatra, Sang Phill Park, Anand Raghunathan, and Kaushik Roy. 2011. IMPACT: Imprecise adders for low-power approximate computing. In International Symposium on Low Power Electronics and Design. 409--414.
[27]
Rajamohana Hegde and Naresh R. Shanbhag. 1999. Energy-efficient signal processing via algorithmic noise-tolerance. In International Symposium on Low Power Electronics and Design. 30--35.
[28]
Chih-Chieh Hsiao, Slo-Li Chu, and Chen-Yu Chen. 2013. Energy-aware hybrid precision selection framework for mobile GPUs. Computers and Graphics 37, 5, 431--444.
[29]
Andrew B. Kahng and Seokhyeong Kang. 2012. Accuracy-configurable adder for approximate arithmetic designs. In Design Automation Conference. 820--825.
[30]
Georgios Keramidas, Chrysa Kokkala, and Iakovos Stamoulis. 2015. Clumsy value cache: An approximate memoization technique for mobile GPU fragment shaders. Workshop on Approximate Computing (WAPCO’15).
[31]
Daya S. Khudia, Babak Zamirai, Mehrzad Samadi, and Scott Mahlke. 2015. Rumba: An online quality management system for approximate computing. In International Symposium on Computer Architecture. 554--566.
[32]
Parag Kulkarni, Puneet Gupta, and Milos Ercegovac. 2011. Trading accuracy for power with an underdesigned multiplier architecture. In International Conference on VLSI Design (VLSI Design’11). 346--351.
[33]
B. Li, P. Gu, Y. Shan, Y. Wang, Y. Chen, and H. Yang. 2015. RRAM-based analog approximate computing. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.
[34]
Song Liu, Karthik Pattabiraman, Thomas Moscibroda, and Benjamin G. Zorn. 2012. Flikker: Saving DRAM refresh-power through critical data partitioning. ACM SIGPLAN Notices 47, 4, 213--224.
[35]
Antonio Roldao Lopes, Amir Shahzad, George Constantinides, Eric C. Kerrigan, and others. 2009. More flops or more precision? Accuracy parameterizable linear equation solvers for model predictive control. In Symposium on Field Programmable Custom Computing Machines (FCCM’09). 209--216.
[36]
Divya Mahajan, Amir Yazdanbakhsh, Jongse Park, Bradley Thwaites, and Hadi Esmaeilzadeh. 2015. Prediction-based quality control for approximate accelerators. Workshop on Approximate Computing Across the System Stack.
[37]
Lawrence McAfee and Kunle Olukotun. 2015. EMEURO: A framework for generating multi-purpose accelerators via deep learning. In International Symposium on Code Generation and Optimization. 125--135.
[38]
Joshua San Miguel, Mario Badr, and Enright Natalie Jerger. 2014. Load value approximation. MICRO.
[39]
Sasa Misailovic, Michael Carbin, Sara Achour, Zichao Qi, and Martin C. Rinard. 2014. Chisel: Reliability-and accuracy-aware optimization of approximate computational kernels. In International Conference on Object Oriented Programming Systems Languages and Applications. 309--328.
[40]
Asit K. Mishra, Rajkishore Barik, and Somnath Paul. 2014. iACT: A software-hardware framework for understanding the scope of approximate computing. In Workshop on Approximate Computing Across the System Stack (WACAS’14).
[41]
Sparsh Mittal. 2012. A survey of architectural techniques for DRAM power management. International Journal of High Performance Systems Architecture 4, 2, 110--119.
[42]
Sparsh Mittal. 2014a. Power Management Techniques for Data Centers: A Survey. Technical Report ORNL/TM-2014/381. Oak Ridge National Laboratory, Oak Ridge, TN.
[43]
Sparsh Mittal. 2014b. A survey of architectural techniques for improving cache power efficiency. Sustainable Computing: Informatics and Systems 4, 1, 33--43.
[44]
Sparsh Mittal. 2015. A survey of architectural techniques for near-threshold computing. ACM Journal on Emerging Technologies in Computing Systems 12, 4, 46:1--46:26.
[45]
Sparsh Mittal and Jeffrey Vetter. 2015. A survey of techniques for modeling and improving reliability of computing systems. IEEE Transactions on Parallel and Distributed Systems (TPDS).
[46]
Sparsh Mittal, Jeffrey S. Vetter, and Dong Li. 2015. A survey of architectural approaches for managing embedded DRAM and non-volatile on-chip caches. IEEE Transactions on Parallel and Distributed Systems (TPDS) 26, 6, 1524--1537.
[47]
Thierry Moreau, Mark Wyse, Jacob Nelson, Adrian Sampson, Hadi Esmaeilzadeh, Luis Ceze, and Mark Oskin. 2015. SNNAP: Approximate computing on programmable SoCs via neural acceleration. In International Symposium on High Performance Computer Architecture (HPCA’15). 603--614.
[48]
NRDC. 2015. Retrieved February 25, 2016 from http://www.nrdc.org/energy/data-center-efficiency-assessment.asp.
[49]
Azar Rahimi, Luca Benini, and Rajesh K. Gupta. 2013. Spatial memoization: Concurrent instruction reuse to correct timing errors in SIMD architectures. IEEE Transactions on Circuits and Systems II: Express Briefs 60, 12, 847--851.
[50]
Abbas Rahimi, Amirali Ghofrani, Kwang-Ting Cheng, Luca Benini, and Rajesh K. Gupta. 2015. Approximate associative memristive memory for energy-efficient GPUs. In Design, Automation and Test in Europe. 1497--1502.
[51]
Arnab Raha, Swagath Venkataramani, Vijay Raghunathan, and Anand Raghunathan. 2015. Quality configurable reduce-and-rank for energy efficient approximate computing. In Design, Automation and Test in Europe. 665--670.
[52]
Abbas Rahimi, Andrea Marongiu, Rajesh K. Gupta, and Luca Benini. 2013. A variability-aware OpenMP environment for efficient execution of accuracy-configurable computation on shared-FPU processor clusters. In International Conference on Hardware/Software Codesign and System Synthesis. 35.
[53]
Ashish Ranjan, Swagath Venkataramani, Xuanyao Fong, Kaushik Roy, and Anand Raghunathan. 2015. Approximate storage for energy efficient spintronic memories. In Design Automation Conference. 195.
[54]
Michael Ringenburg, Adrian Sampson, Isaac Ackerman, Luis Ceze, and Dan Grossman. 2015. Monitoring and debugging the quality of results in approximate programs. In International Conference on Architectural Support for Programming Languages and Operating Systems. 399--411.
[55]
Michael F. Ringenburg, Adrian Sampson, Luis Ceze, and Dan Grossman. 2014. Profiling and autotuning for energy-aware approximate programming. In Workshop on Approximate Computing Across the System Stack (WACAS’14).
[56]
Pooja Roy, Rajarshi Ray, Chundong Wang, and Weng Fai Wong. 2014. ASAC: Automatic sensitivity analysis for approximate computing. In Conference on Languages, Compilers and Tools For Embedded Systems. 95--104.
[57]
Mehrzad Samadi, Davoud Anoushe Jamshidi, Janghaeng Lee, and Scott Mahlke. 2014. Paraprox: Pattern-based approximation for data parallel applications. In ACM SIGARCH Computer Architecture News, Vol. 42. 35--50.
[58]
Mehrzad Samadi, Janghaeng Lee, D. Anoushe Jamshidi, Amir Hormati, and Scott Mahlke. 2013. SAGE: Self-tuning approximation for graphics engines. In International Symposium on Microarchitecture. 13--24.
[59]
Mehrzad Samadi and Scott Mahlke. 2014. CPU-GPU collaboration for output quality monitoring. In Workshop on Approximate Computing Across the System Stack. 1--3.
[60]
Adrian Sampson, André Baixo, Benjamin Ransford, Thierry Moreau, Joshua Yip, Luis Ceze, and Mark Oskin. 2015. ACCEPT: A Programmer-Guided Compiler Framework for Practical Approximate Computing. Technical Report UW-CSE-15-01-01. University of Washington, Seattle, WA.
[61]
Adrian Sampson, Werner Dietl, Emily Fortuna, Danushen Gnanapragasam, Luis Ceze, and Dan Grossman. 2011. EnerJ: Approximate data types for safe and general low-power computation. In ACM SIGPLAN Notices, Vol. 46. 164--174.
[62]
Adrian Sampson, Jacob Nelson, Karin Strauss, and Luis Ceze. 2013. Approximate storage in solid-state memories. In International Symposium on Microarchitecture. 25--36.
[63]
John Sartori and Ravindra Kumar. 2013. Branch and data herding: Reducing control and memory divergence for error-tolerant GPU applications. IEEE Transactions on Multimedia 15, 2, 279--290.
[64]
Qinfeng Shi, Henry Hoffmann, and Omar Khan. 2015. A HW-SW multicore architecture to tradeoff program accuracy and resilience overheads. Computer Architecture Letters.
[65]
Byonghyo Shim, Srinivasa R. Sridhara, and Naresh R. Shanbhag. 2004. Reliable low-power digital signal processing via reduced precision redundancy. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 12, 5, 497--510.
[66]
Majid Shoushtari, Abbas BanaiyanMofrad, and Nikil Dutt. 2015. Exploiting partially-forgetful memories for approximate computing. IEEE Embedded Systems Letters 7, 1, 19--22.
[67]
Stelios Sidiroglou, Sasa Misailovic, Henry Hoffmann, and Martin Rinard. 2011. Managing performance vs. accuracy trade-offs with loop perforation. In ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering. 124--134.
[68]
Mark Sutherland, Joshua San Miguel, and Natalie Enright Jerger. 2015. Texture cache approximation on GPUs. Workshop on Approximate Computing Across the Stack.
[69]
Ye Tian, Qian Zhang, Ting Wang, Feng Yuan, and Qiang Xu. 2015. ApproxMA: Approximate memory access for dynamic precision scaling. In ACM Great Lakes Symposium on VLSI. 337--342.
[70]
Girish Vishnu Varatkar and Naresh R. Shanbhag. 2008. Error-resilient motion estimation architecture. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 16, 10, 1399--1412.
[71]
Vassilis Vassiliadis, Konstantinos Parasyris, Charalambos Chaliosy, Christos D. Antonopoulos, Spyros Lalis, Nikolaos Bellas, Hans Vandierendoncky, and Dimitrios S. Nikolopoulos. 2015. A programming model and runtime system for significance-aware energy-efficient computing. In 1st Workshop On Approximate Computing (WAPCO’15).
[72]
Swagath Venkataramani, Srimat T. Chakradhar, Kaushik Roy, and Anand Raghunathan. 2015. Approximate computing and the quest for computing efficiency. In Design Automation Conference. 120.
[73]
Swagath Venkataramani, Vinay K. Chippa, Srimat T. Chakradhar, Kaushik Roy, and Anand Raghunathan. 2013. Quality programmable vector processors for approximate computing. In International Symposium on Microarchitecture. 1--12.
[74]
Swagath Venkataramani, Anand Raghunathan, Jie Liu, and Mohammed Shoaib. 2015. Scalable-effort classifiers for energy-efficient machine learning. In Design Automation Conference. 67.
[75]
Swagath Venkataramani, Ashish Ranjan, Kaushik Roy, and Anand Raghunathan. 2014. AxNN: Energy-efficient neuromorphic systems using approximate computing. In International Symposium on Low Power Electronics and Design. 27--32.
[76]
Swagath Venkataramani, Amit Sabne, Vivek Kozhikkottu, Kaushik Roy, and Anand Raghunathan. 2012. SALSA: Systematic logic synthesis of approximate circuits. In Design Automation Conference. 796--801.
[77]
Jeffrey S. Vetter and Sparsh Mittal. 2015. Opportunities for nonvolatile memory systems in extreme-scale high performance computing. Computing in Science and Engineering 17, 2, 73--82.
[78]
Xin Xu and H. Howie Huang. 2015. Exploring data-level error tolerance in high-performance solid-state drives. IEEE Transactions on Reliability 64, 1, 15--30.
[79]
Amir Yazdanbakhsh, Divya Mahajan, Bradley Thwaites, Jongse Park, Anandhavel Nagendrakumar, Sindhuja Sethuraman, Kartik Ramkrishnan, Nishanthi Ravindran, Rudra Jariwala, Abbas Rahimi, Hadi Esmaeilzadeh, and Kia Bazargan. 2015a. Axilog: Language support for approximate hardware design. In Design, Automation and Test in Europe Conference and Exhibition. 812--817.
[80]
Amir Yazdanbakhsh, Gennady Pekhimenko, Bradley Thwaites, Hadi Esmaeilzadeh, Taesoo Kim, Onur Mutlu, and Todd C. Mowry. 2015b. RFVP: Rollback-Free Value Prediction with Safe-to-Approximate Loads. Technical Report. Georgia Institute of Technology, Atlanta, GA.
[81]
Thomas Y. Yeh, Petros Faloutsos, Milos Ercegovac, Sanjay J. Patel, and Glenn Reinman. 2007. The art of deception: Adaptive precision reduction for area efficient physics acceleration. In International Symposium on Microarchitecture. 394--406.
[82]
Yavuz Yetim, Margaret Martonosi, and Sharad Malik. 2013. Extracting useful computation from error-prone processors for streaming applications. In Design, Automation and Test in Europe Conference and Exhibition (DATE’13). 202--207.
[83]
Hang Zhang, Mateja Putic, and John Lach. 2014. Low power GPGPU computation with imprecise hardware. In Design Automation Conference (DAC’14). 1--6.
[84]
Qian Zhang, Ting Wang, Ye Tian, Feng Yuan, and Qiang Xu. 2015. ApproxANN: An approximate computing framework for artificial neural network. In Design, Automation and Test in Europe. 701--706.

Cited By

View all

Index Terms

  1. A Survey of Techniques for Approximate Computing

        Recommendations

        Comments

        Information & Contributors

        Information

        Published In

        cover image ACM Computing Surveys
        ACM Computing Surveys  Volume 48, Issue 4
        May 2016
        605 pages
        ISSN:0360-0300
        EISSN:1557-7341
        DOI:10.1145/2891449
        • Editor:
        • Sartaj Sahni
        Issue’s Table of Contents
        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        Published: 18 March 2016
        Accepted: 01 January 2016
        Revised: 01 January 2016
        Received: 01 July 2015
        Published in CSUR Volume 48, Issue 4

        Permissions

        Request permissions for this article.

        Check for updates

        Author Tags

        1. CPU
        2. FPGA
        3. GPU
        4. Review
        5. approximate computing technique (ACT)
        6. approximate storage
        7. classification
        8. neural networks
        9. quality configurability

        Qualifiers

        • Survey
        • Research
        • Refereed

        Funding Sources

        • Advanced Scientific Computing Research
        • U.S. Department of Energy
        • Office of Science

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)1,455
        • Downloads (Last 6 weeks)173
        Reflects downloads up to 12 Jan 2025

        Other Metrics

        Citations

        Cited By

        View all

        View Options

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        Login options

        Full Access

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media