Automatic memoization for energy efficiency in financial applications

Abstract Software applications directly impact on IT energy consumptions as they indirectly guide hardware operations. Optimizing algorithms has a direct beneficial impact on energy efficiency, but it requires domain knowledge and an accurate analysis of the code, which may be infeasible and too costly to perform for large code bases. In this paper we present an approach based on dynamic memoization to increase software energy efficiency. This implies to identify a subset of pure functions that can be tabulated, to automatically store the results corresponding to the most frequent invocations and to dynamically manage the tabulation memory to adapt to workload variation. We implemented a prototype software system to apply memoization and tested it on a set of financial functions. Empirical results on a specific set of computation intensive pure functions show average energy savings of 96.8% and time performance savings of 97%.

[1]  Guy E. Blelloch,et al.  Selective memoization , 2003, POPL '03.

[2]  Haiying Xu,et al.  Dynamic purity analysis for java programs , 2007, PASTE '07.

[3]  F. Black,et al.  The Pricing of Options and Corporate Liabilities , 1973, Journal of Political Economy.

[4]  E. Stanford,et al.  Environmental Trends and Opportunities for Computer System Power Delivery , 2008, 2008 20th International Symposium on Power Semiconductor Devices and IC's.

[5]  Chiara Francalanci,et al.  The Impact of MIS Software on IT Energy Consumption , 2010, ECIS.

[6]  Atanas Rountev,et al.  Precise identification of side-effect-free methods in Java , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[7]  Andrew C. Myers,et al.  A decentralized model for information flow control , 1997, SOSP.

[8]  David A. Wagner,et al.  Verifiable functional purity in java , 2008, CCS.

[9]  Peter Norvig,et al.  Techniques for Automatic Memoization with Applications to Context-Free Parsing , 1991, CL.

[10]  Martin C. Rinard,et al.  Purity and Side Effect Analysis for Java Programs , 2005, VMCAI.

[11]  Mahmut T. Kandemir,et al.  A special-purpose compiler for look-up table and code generation for function evaluation , 2010, 2010 Design, Automation & Test in Europe Conference & Exhibition (DATE 2010).

[12]  Martin D. Westhead,et al.  A methodology for benchmarking Java Grande applications , 1999, JAVA '99.

[13]  Gary L. Gastineau The Currency Hedging Decision: A Search for Synthesis in Asset Allocation , 1995 .