A Framework for Variable Quality in Applications through Context-Aware Approximate Computing
We introduce a framework that enables applications to dynamically change their quality (and consequently their resource usage) according to contextual information and energy consumption goals. The framework combines a multi-implementation mathematical library with a context monitoring system service and an application adaptation support system. The library features multiple implementations of varying quality and cost for each supported function. The context monitoring system service continuously evaluates system resource usage, and signals applications to adapt their quality (by changing to lower or higher quality implementations) when overall energy usage deviates from a goal set by the user. The support system receives information from the monitoring system, and transparently changes the implementations used by applications. Our experiments demonstrate that the framework can save up to 62% in energy consumption by tolerating at most of 4% degradation in application quality. Experiments furthermore show that the framework can successfully reach desired energy goals by dynamically adjusting application quality.
W. Baek and T. M. Chilimbi, “Green: A framework for supporting energy-conscious programming using controlled approximation,” SIGPLAN Not., vol. 45, no. 6, 2010.
A. Sampson, W. Dietl, E. Fortuna, D. Gnanapragasam, L. Ceze, and D. Grossman, “Enerj: Approximate data types for safe and general low-power computation,” SIGPLAN Not., vol. 46, no. 6, pp. 164–174, Jun. 2011.
J. Ansel, C. Chan, Y. L. Wong, M. Olszewski, Q. Zhao, A. Edelman, and S. Amarasinghe, “Petabricks: A language and compiler for algorithmic choice,” SIGPLAN Not., vol. 44, no. 6, pp. 38–49, 2009.
H. Esmaeilzadeh, A. Sampson, L. Ceze, and D. Burger, “Neural acceleration for general-purpose approximate programs,” in Proc. International Symposium on Microarchitecture (MICRO), 2012, pp. 449–460.
J. G. Reis, A. A. Frohlich, and L. F. Wanner, “X-ware: mutant computing substrates,” in 2015 International Symposium on Rapid System Prototyping (RSP), Oct 2015, pp. 25–31.
J. Sorber, A. Kostadinov, M. Garber, M. Brennan, M. D. Corner, and E. D. Berger, “Eon: A language and runtime system for perpetual systems,” in Proc. Intl. Conf. on Embedded Networked Sensor Systems (SenSys), 2007, pp. 161–174.
H. Hoffmann, “Jouleguard: Energy guarantees for approximate applications,” in Proc. Symposium on Operating Systems Principles (SOSP), 2015, pp. 198–214.
J. S. Miguel, J. Albericio, A. Moshovos, and N. E. Jerger, “Doppelganger: A cache for approximate computing,” in Proc. Intl. Symposium on Microarchitecture (MICRO), 2015.
M. Gottscho, A. BanaiyanMofrad, N. Dutt, A. Nicolau, and P. Gupta, “Power / capacity scaling: Energy savings with simple fault-tolerant caches,” in Proc. Design Automation Conference (DAC), 2014.
S. Hashemi, R. I. Bahar, and S. Reda, “Drum: A dynamic range unbiased multiplier for approximate applications,” in Proc. Intl. Conf. on Computer-Aided Design (ICCAD), 2015.
S. Elmalaki, L. Wanner, and M. Srivastava, “Caredroid: Adaptation framework for android context-aware applications,” in Proc. Intl. Conf. on Mobile Computing and Networking (MobiCom), 2015, pp. 386–399.
L. Wanner, S. Elmalaki, L. Lai, P. Gupta, and M. Srivastava, “Varemu: An emulation testbed for variability-aware software,” in Intl. Conf. on Hardware/Software Codesign and System Synthesis (CODES+ISSS), 2013.
H. Hoffmann, S. Sidiroglou, M. Carbin, S. Misailovic, A. Agarwal, and M. Rinard, “Dynamic knobs for responsive power-aware computing,” SIGPLAN Not., vol. 46, no. 3, pp. 199–212, Mar. 2011.