This article presents a survey of techniques for approximate computing (AC), which trades off computation quality with effort. As performance demands increase while resource budgets plateau, AC has become essential. The article discusses strategies for identifying approximable program portions, monitoring output quality, and using AC in different processing units (CPU, GPU, FPGA), memory technologies, and programming frameworks. Techniques are classified based on key characteristics to highlight similarities and differences. The aim is to provide insights into AC techniques and inspire further research to make AC the mainstream computing approach.
AC leverages error-tolerant code regions and user perceptual limitations to trade off implementation, storage, and/or result accuracy for performance or energy gains. It can benefit applications like data analytics, scientific computing, multimedia, machine learning, and MapReduce. However, AC is not a panacea. Effective use requires careful selection of approximable code/data portions and approximation strategies to avoid unacceptable quality loss. Approximation in control flow or memory access can lead to catastrophic results. Monitoring output is necessary to ensure quality specifications are met.
AC presents several challenges, including limited application domain, correctness issues, finding application-specific strategies, overhead and scalability, and maintaining high quality and configurability. Techniques proposed in the article aim to address these challenges.
The article discusses identifying approximable portions and expressing this at the language level, ensuring quality through output monitoring, programming language support for AC, and using OpenMP-style directives for marking approximable portions. Strategies for approximation include precision scaling, loop perforation, load value approximation, memoization, and skipping tasks and memory accesses. These strategies are used in various ACTs to achieve efficiency with bounded QoR loss. The article concludes with a discussion on future challenges in AC.This article presents a survey of techniques for approximate computing (AC), which trades off computation quality with effort. As performance demands increase while resource budgets plateau, AC has become essential. The article discusses strategies for identifying approximable program portions, monitoring output quality, and using AC in different processing units (CPU, GPU, FPGA), memory technologies, and programming frameworks. Techniques are classified based on key characteristics to highlight similarities and differences. The aim is to provide insights into AC techniques and inspire further research to make AC the mainstream computing approach.
AC leverages error-tolerant code regions and user perceptual limitations to trade off implementation, storage, and/or result accuracy for performance or energy gains. It can benefit applications like data analytics, scientific computing, multimedia, machine learning, and MapReduce. However, AC is not a panacea. Effective use requires careful selection of approximable code/data portions and approximation strategies to avoid unacceptable quality loss. Approximation in control flow or memory access can lead to catastrophic results. Monitoring output is necessary to ensure quality specifications are met.
AC presents several challenges, including limited application domain, correctness issues, finding application-specific strategies, overhead and scalability, and maintaining high quality and configurability. Techniques proposed in the article aim to address these challenges.
The article discusses identifying approximable portions and expressing this at the language level, ensuring quality through output monitoring, programming language support for AC, and using OpenMP-style directives for marking approximable portions. Strategies for approximation include precision scaling, loop perforation, load value approximation, memoization, and skipping tasks and memory accesses. These strategies are used in various ACTs to achieve efficiency with bounded QoR loss. The article concludes with a discussion on future challenges in AC.