The Energetics of Computing in Life & Machines pp 263-283
DOI: 10.37911/9781947864078.10
10. Automatically Reducing Energy Consumption of Software
Authors: Jeremy Lacomis, Carnegie Mellon University; Jonathan Dorn, GrammaTech, Inc.; Westley Weimer, University of Michigan; and Stephanie Forrest, Arizona State University
Excerpt
Introduction
As computation continues to migrate from personal computers to large-scale data centers, the energy required to run computers has become a significant economic and environmental concern. For example, between 2005 and 2010, data center electricity consumption grew by 24%. By 2014, data centers accounted for 1.8% of US energy consumption (Shehabi et al. 2016). Although this large energy footprint has led to some mitigation efforts, energy consumption in data centers continues to rise. Current estimates project that US energy use will increase a further 4% from 2014 to 2020. In 2016, in anticipation of the possible environmental impact of its growing energy demand, Google announced a $2.5 billion commitment to the purchase of energy from renewable sources.
Computer hardware efficiency directly affects data center energy consumption, and this effect is multiplied by the support systems required for deployment. Mechanical and electrical systems, such as lighting, cooling, air circulation, and uninterruptible power supplies, can quadruple the power required by the computational hardware itself (Hoelzle and Barroso 2009).
The software running in the center can further multiply energy consumption. For example, data centers must be provisioned with sufficient hardware to run the desired algorithms in a timely fashion. Algorithmic inefficiencies in software implementations can increase run times, leading to greater emphasis on parallelism to compensate. Contention for resources like networks, disks, memory, or caches leads to overprovisioning hardware (Mars et al. 2012). At sufficient scales, hardware reliability concerns require implementation of redundant resources and computations; for example, Microsoft implements redundancy for all customer data in Azure storage accounts to meet the uptime guaranteed by its service-level agreements.2 Because the load on the support systems scales with computational load, improving computational efficiency could significantly reduce overall energy costs of data centers.
Bibliography
Bruce, B. R., J. Petke, and M. Harman. 2015. “Reducing Energy Consumption Using Genetic Improvement.” In Genetic and Evolutionary Computation Conference, 1327–1334.
Bruce, B. R., J. Petke, M. Harman, and E. Barr. 2018. “Approximate Oracles and Synergy in Software Energy Search Spaces.” Transactions on Software Engineering PP, no. 99 (April): 1–1.
David, H., E. Gorbatov, U. R. Hanebutte, R. Khanna, and C. Le. 2010. “RAPL: Memory Power Estimation and Capping.” In International Symposium on Low-Power Electronics and Design, 189–194.
Deb, K., A. Pratap, S. Agarwal, and T. Meyarivan. 2002. “A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II.” Transactions on Evolutionary Computation 6, no. 2 (April): 182–197.
Delaluz, V., M. Kandemir, N. Vijaykrishnan, A. Sivasubramaniam, and M. J. Irwin. 2001. “DRAM Energy Management Using Software and Hardware Directed Power Mode Control.” In International Symposium on High-Performance Computer Architecture, 159–169.
Dorigo, M., and B. Birattari. 2011. “Ant Colony Optimization.” In Encyclopedia of Machine Learning, 36–39. New York: Springer.
Dorn, J., J. Lacomis, W. Weimer, and S. Forrest. 2017. “Automatically Exploring Tradeoffs between Software Output Fidelity and Energy Costs.” Transactions on Software Engineering PP, no. 99 (November): 1–1.
Douglis, F., P. Krishnan, and B. Bershad. 1995. “Adaptive Disk Spin-Down Policies for Mobile Computers.” In Symposium on Mobile and Location-Independent Computing, 121–137. April.
Gupta, V., D. Mohapatra, A. Raghunathan, and K. Roy. 2013. “Low-Power Digital Signal Processing Using Approximate Adders.” Transactions on Computer-Aided Design of Integrated Circuits and Systems 32, no. 1 (January): 124–137.
Han, J., and M. Orshansky. 2013. “Approximate Computing: An Emerging Paradigm for Energy-Efficient Design.” In European Test Symposium, 1–6.
Haraldsson, S. O., and J. R. Woodward. 2015. “Genetic Improvement of Energy Usage Is Only as Reliable as the Measurements Are Accurate.” In Genetic and Evolutionary Computation Conference, 821–822.
Harman, M., Y. Jia, and W. B. Langdon. 2014. “Babel Pidgin: SBSE Can Grow and Graft Entirely New Functionality into a Real World System.” In International Symposium on Search-Based Software Engineering, 247–252.
Hoelzle, U., and L. A. Barroso. 2009. The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines. 1st ed. Morgan / Claypool.
Hoffmann, H., S. Misailovic, S. Sidiroglou, A. Agarwal, and M. Rinard. 2009. Using Code Perforation to Improve Performance, Reduce Energy Consumption, and Respond to Failures. Technical Report MIT-CSAIL-TR-2009-042. Cambridge, MA: MIT.
Holland, J. H. 1992. Adaptation in Natural and Artificial Systems. 2nd ed. Cambridge, MA: MIT Press.
Hsu, C.-H., and U. Kremer. 2003. “The Design, Implementation, and Evaluation of a Compiler Algorithm for CPU Energy Reduction.” In Programming Language Design and Implementation, 38–48. June.
Kammerer, W. J., and M. Z. Nashed. 1972. “Iterative Methods for Best Approximate Solutions of Linear Integral Equations of the First and Second Kinds.” Journal of Mathematical Analysis and Applications 40, no. 3 (December): 547–573.
Kim, D., J. Nam, J. Song, and S. Kim. 2013. “Automatic Patch Generation Learned from Human-Written Patches.” In International Conference on Software Engineering, 802–811. May.
Kirkpatrick, S., C. D. Gelatt, and M. P. Vecchi. 1983. “Optimization by Simulated Annealing.” Science 220 (4598): 671–680.
Kocher, P., D. Genkin, D. Gruss, W. Haas, M. Hamburg, M. Lipp, S. Mangard, T. Prescher, M. Schwarz, and Y. Yarom. 2018. “Spectre Attacks: Exploiting Speculative Execution.” ArXiv:1801.01203.
Koza, J. R. 1992. Genetic Programming: On the Programming of Computers by Means of Natural Selection. Cambridge, MA: MIT Press.
Langdon, W. B. 2015. “Genetically Improved Software.” In Handbook of Genetic Programming Applications, edited by Amir H. Gandomi, Amir H. Alavi, and Conor Ryan. New York: Springer.
Le Goues, C., M. Dewey-Vogt, S. Forrest, and W. Weimer. 2012. “A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each.” In International Conference on Software Engineering, 3–13.
Lee, M. T.-C., V. Tiwari, S. Malik, and M. Fujita. 1997. “Power Analysis and Minimization Techniques for Embedded DSP Software.” Transactions on Very Large Scale Integration Systems 5 (1): 123–135.
Linares-Vásquez, M., G. Bavota, C. E. B. Cárdenas, R. Oliveto, M. Di Penta, and D. Poshyvanyk. 2015. “Optimizing Energy Consumption of GUIs in Android Apps: A Multi-objective Approach.” In Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering, 143–154.
Lipp, M., M. Schwarz, D. Gruss, T. Prescher, W. Haas, S. Mangard, P. Kocher, D. Genkin, Y. Yarom, and M. Hamburg. 2018. “Meltdown.” ArXiv:1801.01207.
Lu, S.-L. 2004. “Speeding Up Processing with Approximation Circuits.” IEEE Computer 37 (3): 67–73.
Manotas, I., L. Pollock, and J. Clause. 2014. “SEEDS: A Software Engineer’s Energy-Optimization Decision Support Framework.” In International Conference on Software Engineering, 503–514.
Mars, J., L. Tang, R. Hundt, K. Skadron, and M. L. Soffa. 2012. “Increasing Utilization in Modern Warehouse-Scale Computers Using Bubble-Up.” IEEE Micro 32, no. 3 (May): 88–99.
Massalin, H. 1987. “Superoptimizer: A Look at the Smallest Program.” ACM SIGARCH Computer Architecture News 15 (5): 122–126.
Mechtaev, S., J. Yi, and A. Roychoudhury. 2016. “Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis.” In International Conference on Software Engineering, 691–701.
Niu, L., and G. Quan. 2004. “Reducing Both Dynamic and Leakage Energy Consumption for Hard Real-Time Systems.” In International Conference on Compilers, Architecture, and Synthesis for Embedded Systems, 140–148.
Nowka, K. J., G. D. Carpenter, E. W. MacDonald, H. C. Ngo, B. C. Brock, K. I. Ishii, T. Y. Nguyen, and J. L. Burns. 2002. “A 32-bit PowerPC System-on-a-Chip with Support for Dynamic Voltage Scaling and Dynamic Frequency Scaling.” IEEE Journal of Solid-State Circuits 37 (11): 1441–1447.
Palem, K. V. 2014. “Inexactness and a Future of Computing.” Philosophical Transactions of the Royal Society, Series A 372, no. 2018 (May): 20130281.
Palem, K. V., and A. Lingamneni. 2013. “Ten Years of Building Broken Chips: The Physics and Engineering of Inexact Computing.” Transactions on Embedded Computing Systems 12, no. 2s (May): 87:1–87:23.
Petke, J. 2016. “Genetic Improvement for Code Obfuscation.” In Genetic and Evolutionary Computation Conference Companion, 1135–1136.
Rabinowitz, S., and S. Wagon. 1995. “A Spigot Algorithm for the Digits of π.” The American Mathematical Monthly 102, no. 3 (March): 195–203.
Reda, S., and A. N. Nowroz. 2012. “Power Modeling and Characterization of Computing Devices: A Survey.” Foundations and Trends in Electronic Design Automation 6 (2): 121–216.
Rice, H. G. 1953. “Classes of Recursively Enumerable Sets and Their Decision Problems.” Transactions of the American Mathematical Society 74:358–366.
Rinard, M. 2006. “Probabilistic Accuracy Bounds for Fault-Tolerant Computations That Discard Tasks.” In International Conference on Supercomputing, 324–334.
————. 2007. “Using Early Phase Termination to Eliminate Load Imbalances at Barrier Synchronization Points.” In International Conference on Object-Oriented Programming, Systems, Languages, and Applications, 369–386.
Sarbishei, O., and K. Radecka. 2010. “Analysis of Precision for Scaling the Intermediate Variables in Fixed-Point Arithmetic Circuits.” In International Conference on Computer-Aided Design, 739–745.
Sarwar, A. 1997. CMOS Power Consumption and Cpd Calculation. Technical report. Texas Instruments, June.
Schkufza, E., R. Sharma, and A. Aiken. 2013. “Stochastic Superoptimization.” In International Conference on Architectural Support for Programming Languages and Operating Systems, 305–316.
Schulte, E., J. Dorn, S. Harding, S. Forrest, and W. Weimer. 2014. “Post-Compiler Software Optimization for Reducing Energy.” In International Conference on Architectural Support for Programming Languages and Operating Systems, 639–652.
Shehabi, A., S. Smith, D. Sartor, R. Brown, M. Herrlin, J. Koomey, E. Masanet, N. Horner, I. Azevedo, and W. Linter. 2016. United States Data Center Energy Usage Report. Technical report. Berkeley, CA: Ernest Orlando Lawrence Berkeley National Laboratory.
Sidiroglou-Douskos, S., S. Misailovic, H. Hoffmann, and M. Rinard. 2011. “Managing Performance vs. Accuracy Trade-Offs with Loop Perforation.” In Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering, 124–134.
Tian, Y., Q. Zhang, T. Wang, F. Yuan, and Q. Xu. 2015. “ApproxMA: Approximate Memory Access for Dynamic Precision Scaling.” In Great Lakes Symposium on VLSI, 337–342.
Tilevich, E., and Y. Smaragdakis. 2002. “J-Orchestra: Automatic Java Application Partitioning.” In European Conference on Object-Oriented Programming, 178– 204.
Venkataramani, S., S. T. Chakradhar, K. Roy, and A. Raghunathan. 2015. “Approximate Computing and the Quest for Computing Efficiency.” In Design Automation Conference, 120:1–120:6.
Yang, Z., J. Han, and F. Lombardi. 2015. “Transmission Gate-Based Approximate Adders for Inexact Computing.” In International Symposium on Nanoscale Architectures, 145–150.
Zitzler, E., L. Thiele, M. Laumanns, C. M. Fonseca, and V. Grunert da Fonseca. 2003. “Performance Assessment of Multiobjective Optimizers: An Analysis and Review.” Transactions on Evolutionary Computation 7 (2): 117–132.