Approximate computing

Approximate computing is computation which returns a possibly inaccurate result rather than a guaranteed accurate result, for a situation where an approximate result is sufficient for a purpose. Approximate computing is based on the observation that in many scenarios, although performing exact computation requires large amount of resources, allowing bounded approximation can provide disproportionate gains in performance and energy, while still achieving acceptable result accuracy.[1][2] For example, no exact answer may exist for a certain search query and hence, many answers may be acceptable. Similarly, occasional dropping of some frames in a video application can go undetected due to perceptual limitations of humans.

The key requirement in approximate computing is that approximation can be introduced only in non-critical data, since approximating critical data (e.g., control operations) can lead to disastrous consequences, such as program crash or erroneous output.

Strategies

Several strategies can be used for performing approximate computing.

Approximate circuits

Approximate adders, multipliers and other logical circuits can reduce hardware overhead.[3][4] For example, an approximate multi-bit adder can ignore the carry chain and thus, allow all its sub-adders to perform addition operation in parallel.

Approximate storage

Instead of storing data values exactly, they can be stored approximately, e.g., by truncating the lower-bits in floating point data. For this, in DRAM, refresh rate can be lowered and in SRAM, supply voltage can be lowered.

Software-level approximation

Some iterations of loops can be skipped (termed as loop perforation) and some tasks can be skipped. Similarly, computation can be done on a sample of data instead of on the full dataset, in an approach known as the Monte Carlo method. The computation can be reformulated in a manner that it can be easily accelerated by specialized hardware, e.g. a neural processing unit.[5]

Application areas

Approximate computing has been used in a variety of domains, such as multimedia processing, machine learning, signal processing, scientific computing, etc.

See also

References

  1. S. Mittal, "A Survey Of Techniques for Approximate Computing", ACM Computing Surveys, 2016.
  2. A. Sampson, et al. "EnerJ: Approximate data types for safe and general low-power computation", In ACM SIGPLAN Notices, vol. 46, no. 6, 2011.
  3. S. Venkataramani, et al. "SALSA: systematic logic synthesis of approximate circuits", DAC, 2012.
  4. R. Hegde et al. "Energy-efficient signal processing via algorithmic noise-tolerance", ISLPED, 1999.
  5. H. Esmaeilzadeh, et al. "Neural acceleration for general-purpose approximate programs", MICRO, 2012
This article is issued from Wikipedia - version of the Wednesday, February 10, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.