Compiling for performance and power efficiency

Performance and power efficiency are issues that can be addressed by the compiler, due to the fact that the compiler will generate code that will exercise several parts of the processor. The mainstream compilers apply several optimizations in order to improve the quality of the final code, but not all optimizations will result in a performance gain and/or power efficiency. In fact, in some cases, some optimizations can cause performance loss and increase the power consumption, due to the program characteristics do not fit the characteristics of optimizations. Therefore, it is a challenge, even for the most expert programmer, to know which optimizations and in which order will generate the best target code for a program in terms of multiple goals. The goal of this paper is to describe COSPpp, a case-based reasoning approach that automatically selects a compiler optimization set for a program that outperforms a well-engineered compiler optimization level, in terms of multiple goals. The results obtained by the proposed approach indicates that it achieves improvement in most cases. In fact, COSPpp achieves a balanced performance and power efficiency ratio close to 7%.

[1]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[2]  장훈,et al.  [서평]「Computer Organization and Design, The Hardware/Software Interface」 , 1997 .

[3]  Lizy K. John,et al.  Is Compiling for Performance — Compiling for Power? , 2001 .

[4]  Krishna V. Palem,et al.  The emerging power crisis in embedded processors: what can a poor compiler do? , 2001, CASES '01.

[5]  Michael F. P. O'Boyle,et al.  Rapidly Selecting Good Compiler Optimizations using Performance Counters , 2007, International Symposium on Code Generation and Optimization (CGO'07).

[6]  Rudolf Eigenmann,et al.  Fast and effective orchestration of compiler optimizations for automatic performance tuning , 2006, International Symposium on Code Generation and Optimization (CGO'06).

[7]  Jichi Guo,et al.  Automated empirical tuning of scientific codes for performance and power consumption , 2011, HiPEAC.

[8]  Rick Kufrin,et al.  PerfSuite: An Accessible, Open Source Performance Analysis Environment for Linux , 2005 .

[9]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[10]  Jack J. Dongarra,et al.  Collecting Performance Data with PAPI-C , 2009, Parallel Tools Workshop.

[11]  Mahmut T. Kandemir,et al.  Influence of compiler optimizations on system power , 2000, Proceedings 37th Design Automation Conference.

[12]  Sameer Kulkarni,et al.  An evaluation of different modeling techniques for iterative compilation , 2011, 2011 Proceedings of the 14th International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES).

[13]  Suresh Purini,et al.  Finding good optimization sequences covering program space , 2013, TACO.

[14]  Daniel T. Larose,et al.  Discovering Knowledge in Data: An Introduction to Data Mining , 2005 .

[15]  Shirley Moore,et al.  Measuring Energy and Power with PAPI , 2012, 2012 41st International Conference on Parallel Processing Workshops.

[16]  Jack Dongarra,et al.  Using PAPI for Hardware Performance Monitoring on Linux Systems , 2001 .

[17]  L. Almagor,et al.  Finding effective compilation sequences , 2004, LCTES '04.

[18]  Markus Rupp,et al.  Compiler-based optimizations impact on embedded software power consumption , 2009, 2009 Joint IEEE North-East Workshop on Circuits and Systems and TAISA Conference.

[19]  Dean M. Tullsen,et al.  The effect of compiler optimizations on Pentium 4 power consumption , 2003, Seventh Workshop on Interaction Between Compilers and Computer Architectures, 2003. INTERACT-7 2003. Proceedings..

[20]  N.G. Santiago,et al.  Impact of source code optimizations on power consumption of embedded systems , 2008, 2008 Joint 6th International IEEE Northeast Workshop on Circuits and Systems and TAISA Conference.