Interactive Compilation Interface for GCC (GCC ICI)

Maintained by
                 Sponsored by

[ Alternative SourceForge view ]


News     Mailing lists     Forums     Objectives     Downloads     Collaborations     Our related publications and documentation     Links

Objectives:

    

The main aim of the Interactive Compilation Interface (ICI) is to enable external access to GCC transformations to be able to tune default optimization heuristic to improve program execution time, code size, power consumption, etc using external plugins and tools without Makefile changes. We also want to use it to transform GCC into research compiler with minimal changes. Together with Continuous Collective Compilation Framework it should enable practical collaborative research with replicable results and unify optimization knowledge reuse among different programs and architectures using statistical and machine learning techniques, and to improve default compiler optimization heuristic. We expect that Interactive Compilation Interface and Continuous Collective Compilation Framework will simplify the design of future compilers and make them modular and extensible with automatically tuned optimization heuristic easily adaptable to different architectures and constraints.

Current version of ICI is described in our GCC Summit'08 paper (many thanks to Cupertino Miranda for extending Interactive Compilation Interface, Edwin Bonilla for extending machine learning techniques, Mircea Namolaru for integrating static program feature extractor to MILEPOST GCC and John Thomson for performance evaluation) and is used in the MILEPOST GCC (machine learning based self-tuning research compiler). We currently support optimization pass selection and reordering, plugins and event mechanism to invoke any passes on demand (such as program feature extraction pass) or tune cost-models of specific transformations within passes. Since the 1st of December 2008 we will have an engineer to start implementing the following:

  • port current ICI to GCC 4.4 (with GRAPHITE support)
  • support IPA pass selection and reordering
  • provide dependencies between passes
  • provide global/fine-grain cost model tuning (individual transformations)
  • provide ability for code instrumentation (adding external function calls, external libraries, adding data arrays for split-compilation, etc)
  • port to GCC4CIL
  • change machine description through ICI

Tuning hardwired compiler optimizations for rapidly evolving hardware makes porting an optimizing compiler for each new platform extremely challenging. Our radical approach is to develop a modular, extensible, self-tuning intelligent compiler that automatically learns the best optimization heuristics based on combining feedback-directed iterative compilation and machine learning. MILEPOST GCC is a machine learning based intelligent compiler that automatically adjusts its optimization heuristics to improve execution time, code size, or compilation time of specific programs on different architectures. Currently, we use several iterative search strategies within CCC framework to find combinations of good optimization flags to substitute GCC default optimization levels for a particular architecture (such as -O0,-O1,-O2,-O3,-Os which we will not need in the future adaptive compilers) or tune optimization passes on a function-level for a particular program. Our preliminary experimental results show that it is possible to considerably reduce execution time of various benchmarks (MiBench, MediaBench, EEMBC, SPEC) on a range of platforms (x86, x8664, IA64, ARC, Longson/Godson, etc) entirely automatically. MILEPOST GCC can be used interactively in research on adaptive computing through the ICI.

We are looking for collaborators to extend GCC ICI and enable automatic tuning of cost-models for main transformations (such as vectorization, register allocation, scheduling, inlining, unrolling, GRAPHITE transformations, etc), add run-time adaptation support for programs with multiple datasets and enable GCC retargetability for design space exploration. More information can be found on the UNIDAPT Group website.

If you have any questions or comments, please use provided forums or contact Grigori Fursin

 

Downloads: Collaborations:
  • GCC-ICI SourceForge releases: Link ]
  • GCC-ICI SourceForge CVS downloads: Link ]

Related websites:


 

Links:

  • PathOpt and PathOpt2 (tool for automated application tuning) - free tool within commercial open-source compiler from QLogic (PathScale) to iteratively search for the best compiler flags. It is easily configurable, works with any languages, does not require project modifications, has many basic search strategies (random, one by one, all but one) and easily extendable.
  • ESTO ( Expert System for Tuning Applications)- iterative optimization tool from IBM to find best compiler flags with genetic algorithms
  • Acovea (Analysis of Compiler Options via Evolutionary Algorithm) - iterative optimization tool to find best compiler flags for C and C++ programs with genetic algorithms
  • PAPI library - performance application programming interface
  • Papiex - command line PAPI measurement tool
  • OProfile - a system profiler for Linux

If I forgot a related link or some group, please don't hesitate to contact us.