Milepost GCC: Machine Learning Enabled Self-tuning Compiler

Fursin, Grigori; Kashnikov, Yuriy; Memon, Abdul Wahid; Chamski, Zbigniew; Temam, Olivier; Namolaru, Mircea; Yom-Tov, Elad; Mendelson, Bilha; Zaks, Ayal; Courtois, Eric; Bodin, Francois; Barnard, Phil; Ashton, Elton; Bonilla, Edwin; Thomson, John; Williams, Christopher K. I.; O'Boyle, Michael
June 2011
International Journal of Parallel Programming;Jun2011, Vol. 39 Issue 3, p296
Academic Journal
Tuning compiler optimizations for rapidly evolving hardware makes porting and extending an optimizing compiler for each new platform extremely challenging. Iterative optimization is a popular approach to adapting programs to a new architecture automatically using feedback-directed compilation. However, the large number of evaluations required for each program has prevented iterative compilation from widespread take-up in production compilers. Machine learning has been proposed to tune optimizations across programs systematically but is currently limited to a few transformations, long training phases and critically lacks publicly released, stable tools. Our approach is to develop a modular, extensible, self-tuning optimization infrastructure to automatically learn the best optimizations across multiple programs and architectures based on the correlation between program features, run-time behavior and optimizations. In this paper we describe Milepost GCC, the first publicly-available open-source machine learning-based compiler. It consists of an Interactive Compilation Interface (ICI) and plugins to extract program features and exchange optimization data with the cTuning.org open public repository. It automatically adapts the internal optimization heuristic at function-level granularity to improve execution time, code size and compilation time of a new program on a given architecture. Part of the MILEPOST technology together with low-level ICI-inspired plugin framework is now included in the mainline GCC. We developed machine learning plugins based on probabilistic and transductive approaches to predict good combinations of optimizations. Our preliminary experimental results show that it is possible to automatically reduce the execution time of individual MiBench programs, some by more than a factor of 2, while also improving compilation time and code size. On average we are able to reduce the execution time of the MiBench benchmark suite by 11% for the ARC reconfigurable processor. We also present a realistic multi-objective optimization scenario for Berkeley DB library using Milepost GCC and improve execution time by approximately 17%, while reducing compilation time and code size by 12% and 7% respectively on Intel Xeon processor.


Related Articles

  • EVALUATION OF VARIOUS COMPILER OPTIMIZATION TECHNIQUES RELATED TO MIBENCH BENCHMARK APPLICATIONS. Andrews, Jeyaraj; Sasikala, Thangappan // Journal of Computer Science;Jun2013, Vol. 9 Issue 6, p749 

    Tuning compiler optimization for a given application of particular computer architecture is not an easy task, because modern computer architecture reaches higher levels of compiler optimization. These modern compilers usually provide a larger number of optimization techniques. By applying all...

  • Experiences with Sweep3D implementations in Co-array Fortran. Coarfa, Cristian; Dotsenko, Yuri; Mellor-Crummey, John // Journal of Supercomputing;May2006, Vol. 36 Issue 2, p101 

    As part of the recent focus on increasing the productivity of parallel application developers, Co-array Fortran (CAF) has emerged as an appealing alternative to the Message Passing Interface (MPI). CAF belongs to the family of global address space parallel programming languages; such languages...

  • Feature Subset Selection for Hot Method Prediction using Genetic Algorithm wrapped with Support Vector Machines. Johnson, Sandra; Shanmugam, Valli // Journal of Computer Science;2011, Vol. 7 Issue 5, p707 

    Problem statement: All compilers have simple profiling-based heuristics to identify and predict program hot methods and also to make optimization decisions. The major challenge in the profile-based optimization is addressing the problem of overhead. The aim of this work is to perform feature...

  • Create Mobile to HPC Applications using a Single Source Tree. Farber, Rob // Scientific Computing;Feb2014, p12 

    The article evaluates the Open ACC 2.0 application programming interface that provides for single-source from mobile to high performance computing (HPC) software.

  • Using SPEC CPU2006 to evaluate the sequential and parallel code generated by commercial and open-source compilers. Aldea, Sergio; Llanos, Diego; Gonz├ílez-Escribano, Arturo // Journal of Supercomputing;Jan2012, Vol. 59 Issue 1, p486 

    The role of the compiler is fundamental to exploit the hardware capabilities of a system running a particular application, minimizing the sequential execution time and, in some cases, offering the possibility of parallelizing part of the code automatically. This paper relies on the SPEC CPU2006...


    An important topic in electronics education is the design and development of electronic modules with emphasis on embedded systems, complex activity that combines hardware and software design. Hardware development chain consists of analog and digital design, schematics capture and circuit...

  • MICHAEL TIEMANN. Rooney, Paula // CRN;10/18/2004, Issue 1117, p22 

    Profiles Michael Tiemann, vice president of open-source affairs at Red Hat. Interest of Tiemann in compilers; Achievements of Tiemann in the computer software industry; Protest led by Tiemann regarding proprietary software; Most-used computer application of Tiemann.

  • Cc65.  // Network Dictionary;2007, p89 

    A reference entry for Cc65, in relation to networking is presented. It refers to an open source package under the GNU General Public License. It also refers to a complete cross development package for 65(C)02 systems such as a macro assembler, a C compiler, linker, librarian, and other tools.

  • FreeBASIC.  // Network Dictionary;2007, p203 

    An encyclopedia entry for "FreeBASIC" is presented. It is an open source 32-bit BASIC programming language compiler. It is syntax compatible with QuickBASIC and expands on the language and capabilities. It also compiles for DOS, Microsoft Windows and Linux operating systems.


Read the Article


Sign out of this library

Other Topics