Energy Aware Algorithmic Engineering

In this work, we argue that energy management should be a guiding principle for design and implementation of algorithms. Traditional complexity models for algorithms are simple and do not aid in design of energy-efficient algorithms. In this work, we conducted a large number of experiments to understand energy consumption for algorithms. We study the energy consumption for popular vector operations, matrix operations, sorting, and graph algorithms. We observed that the energy consumption for any given algorithm depends on the memory parallelism the algorithm can exhibit for a given data layout in the RAM with variations up to 100% for many popular algorithms. Our experiments validate the asymptotic energy complexity model presented in a companion paper [1] and brings out many practical insights. We show that reads can be more expensive in terms of energy than writes, and different data types can lead to different energy consumption. Our most important result is a theoretical and experimental quantification of the impact of parallel data sequences on energy consumption. We also observe that high memory parallelism can also increase energy consumption with multiple concurrent access sequences. We use insights from our experiments to propose algorithmic engineering techniques for practical energy efficient software.

[1]  David C. Snowdon,et al.  Accurate on-line prediction of processor and memoryenergy usage under voltage scaling , 2007, EMSOFT '07.

[2]  Sandy Irani,et al.  An overview of the competitive and adversarial approaches to designing dynamic power management strategies , 2005, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[3]  Margaret Martonosi,et al.  Wattch: a framework for architectural-level power analysis and optimizations , 2000, Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).

[4]  Ricardo Bianchini,et al.  Energy conservation in heterogeneous server clusters , 2005, PPoPP.

[5]  Anand Sivasubramaniam,et al.  Managing server energy and operational costs in hosting centers , 2005, SIGMETRICS '05.

[6]  Aart J. C. Bik,et al.  Pregel: a system for large-scale graph processing , 2010, SIGMOD Conference.

[7]  Luiz André Barroso,et al.  The Case for Energy-Proportional Computing , 2007, Computer.

[8]  Erik D. Demaine,et al.  Energy-Efficient Algorithms , 2016, ITCS.

[9]  Christoforos E. Kozyrakis,et al.  A Comparison of High-Level Full-System Power Models , 2008, HotPower.

[10]  Anand Sivasubramaniam,et al.  Profiling, Prediction, and Capping of Power Consumption in Consolidated Environments , 2008, 2008 IEEE International Symposium on Modeling, Analysis and Simulation of Computers and Telecommunication Systems.

[11]  Frank Bellosa,et al.  The benefits of event: driven energy accounting in power-sensitive systems , 2000, ACM SIGOPS European Workshop.

[12]  F. Frances Yao,et al.  A scheduling model for reduced CPU energy , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[13]  Mahmut T. Kandemir,et al.  Using complete machine simulation for software power estimation: the SoftWatt approach , 2002, Proceedings Eighth International Symposium on High Performance Computer Architecture.

[14]  Amin Vahdat,et al.  ECOSystem: managing energy as a first class operating system resource , 2002, ASPLOS X.

[15]  Atri Rudra,et al.  An energy complexity model for algorithms , 2013, ITCS '13.

[16]  Akshat Verma,et al.  WattApp: an application aware power meter for shared data centers , 2010, ICAC '10.

[17]  Christos Kozyrakis,et al.  Full-System Power Analysis and Modeling for Server Environments , 2006 .

[18]  Charles E. Leiserson,et al.  Cache-Oblivious Algorithms , 2003, CIAC.

[19]  David E. Irwin,et al.  Ensemble-level Power Management for Dense Blade Servers , 2006, 33rd International Symposium on Computer Architecture (ISCA'06).

[20]  Kirk Pruhs,et al.  Speed scaling to manage energy and temperature , 2007, JACM.