Many applications in various domains either exhibit an inherent error resilience (e.g., multimedia processing, where the human senses cannot perceive minor differences in sound or pixel values) or do not provide a golden result (e.g., recommender systems). The design paradigm Approximate Computing utilizes this fact to trade off computational accuracy against a target metric (e.g., runtime, hardware area, or energy consumption). For the trade-off, Approximate Computing - as the name suggests - applies approximations at all levels of the computing stack, from the software level (e.g., by skipping iterations of a loop) down to the circuit level (e.g., by removing gates or transistors from the circuitry). It is essential, however, to keep the quality above a user-defined threshold, since, otherwise, the result might become unuseable.
Approximate Computing can, for example, be used for reducing the computational demand of algorithms enabling them for embedded devices, in mobile applications to increase battery lifetime, or in video streaming applications to maintain a steady video stream even when the bandwidth drops, think of Netflix as an example that adjusts the video quality dynamically to the bandwidth available.
To give you an example of how Approximate Computing looks like in practice and why approximating a system is not a trivial task, see the figure below. The images are the output of a JPEG compression hardware, which was targeted by Approximate Computing. The image on the left-hand side shows the compressed output image generated with the original, precise system. The center image and the image on the right show examples of approximate outcomes. These two images have been produced with JPEG compression hardware that was subjected to approximations. Some bits have been truncated from the computations for the hardware generating the center image, resulting in an outcome beyond acceptable quality. The approximations of the hardware creating the image on the right-hand side have been applied more intelligently, making it almost indistinguishable from the reference (left image). For both the image in the middle and the image on the right-hand side, power savings of around 53% over the original implementation have been achieved, highlighting the benefits of Approximate Computing and the advantages of the approximation technique that generated the image on the right.