Overview News Research Software Publications Resources Contact/Visit
Brief information

UNIDAPT Group (UNIversal aDAPTation) pioneers and promotes radically new practical techniques to overcome the complexity of current architectures, compilers, operating systems and programming environments, and to automate and improve architecture and compiler design (particularly for future heterogeneous multi-core systems), optimize and parallelize systems to improve performance, power consumption, size and fault-tolerance, reduce cost and time to market based on machine learning, artificial intelligence, statistical methods and biologically inspired techniques. This is critical to be able to continue innovation in science and industry (bioinformatics, medicine, physics, chemistry, finances, gaming, etc) that demands ever-increasing computing resources while placing strict requirements on systems.

UNIDAPT group is created by Dr. Grigori Fursin and has close collaboration with the groups of Prof.Michael O'Boyle (University of Edinburgh), Prof.Olivier Temam (INRIA) and colleagues from IBM.

We are leading the following developments:

  • MILEPOST GCC - the first machine learning based self-tuning research compiler;
  • Continuous Collective Compilation (and Parallelization) Framework - framework to reuse the optimization knowledge among different programs and architectures based on MILEPOST GCC and Global Optimization Database;
  • Interactive Compilation Interface - interface for GCC, Open64/PathScale and other compilers to enable practical iterative interactive optimizations and make future compilers modular and extensible with automatically tuned optimization heuristic easily adaptable to different architectures and constraints;
  • MiDataSets - multiple datasets to enable realistic program and architecture optimizations, run-time adaptation and performance evaluation;
  • UNIDAPT Framework - techniques to enable run-time adaptation for statically compiled programs on heterogeneous multi-core architectures;
  • Techniques to reuse knowledge and speedup program optimizations and architecture design space exploration based on reactions to optimizations;
We have a fruitful collaboration with both academia and industry:

If you would like to discuss research, collaboration, visits, internships, grant proposals, funding, consulting services and knowledge transfer, startups, provide sponsorship, etc, please don't hesitate to contact us!

MILEPOST GCC

Together with the MILEPOST colleagues, we are developing MILEPOST GCC - the first machine learning based self-tuning research compiler (described in our GCC Summit'08 paper). The pre-release version of MILEPOST GCC is available on the CVS of GCC-ICI project (March 2008 version). We plan to document and release MILEPOST GCC v1.0 in summer 2008. You can subscribe for UNIDAPT announcements to know when it is released or contact Grigori Fursin for more details.

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-optimizing compiler that automatically learns the best optimization heuristics based on the behavior of the platform. MILEPOST GCC is a machine-learning-based compiler that automatically adjusts its optimization heuristics to improve the execution time, code size, or compilation time of specific programs on different architectures. 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.

Some references: GCC Summit'08 paper and bib,CGO'06 paper and bib; IBM's press release at CNN Money.

[ MILEPOST GCC development branch is available and will be updated in summer 2008 ]

Continuous Collective Compilation (and Parallelization) Framework

This framework automate and simplify transparent reuse of optimization knowledge among different programs and architectures using static and dynamic (hardware counters and reactions) program features based on MILEPOST GCC and Global Optimization Database. It will be used to overcome the complexity of current architectures, compilers, operating systems and programming environments, and to automate and improve architecture and compiler design (particularly for future heterogeneous multi-core systems), optimize and parallelize systems to improve performance, power consumption, size and fault-tolerance, reduce cost and time to market based on machine learning, artificial intelligence, statistical methods and biologically inspired techniques.

This framework is highly portable and have been tested on various platforms including x86, x8664, IA64, ARC, Longson/Godson, etc. It uses MILEPOST GCC to enable iterative compilation and program feature extraction, and allow transparent program optimizations without Makefile and other project modifications. It uses MiDataSets to analyze the behavior of programs with multiple datasets to enable research on run-time adaptation. It uses PAPI library to collect describing program dynamic behavior. CCC Framework can be used to optimize benchmarks such as SPEC 2006 transparently without any Makefile and project modifications. Our preliminary experimental results show that it is possible to reduce execution time and code size of various benchmarks (MiBench, MediaBench, EEMBC, SPEC) on a range of platforms entirely automatically.

The pre-release version of CCC Framework is available on the CVS project (March 2008 version). We plan to release CCC Framework v1.0 in summer 2008. You can subscribe for UNIDAPT announcements to know when it is released.

Some references: GCC Summit'08 paper and bib.

[ Sourceforge development site ]

Interactive Compilation Interface

The aim of the Interactive Compilation Interface (ICI) is to transform compilers such as GCC (production quality non-research compiler that supports many languages and architectures) into research compiler with minimal changes. We use it to enable research on practical iterative fine-grain program optimizations for different constraints (performance, code size, power consumption, DSE, different ISAs, etc), to 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 this 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.

Some references: GCC Summit'08 paper and bib; HiPEAC'05 paper and bib; HiPEAC cluster.

[ Sourceforge development site for GCC ]

[ Sourceforge development site for Open64 Compiler ]

[ Sourceforge development site for PathScale Compiler ]

MiDataSets

Iterative optimization is now a popular technique to obtain performance or code size improvements over the default settings in a compiler. However, in most of the research projects, the best configuration is found for one arbitrary dataset and it is assumed that this configuration will work well with any other dataset that a program uses. We created 20 different datasets per program for MiBench benchmark to evaluate this assumption and analyze the behavior of various programs with multiple datasets. We expect that MiDataSets will enable research on realistic program and architecture optimizations, run-time adaptation and performance evaluation.

Some references: HiPEAC'07 paper and bib; GCC Summit'07 paper and bib.

[ Sourceforge development site ]

UNIDAPT Framework

UNIDAPT framework enables practical and transparent run-time adaptability for statically compiled or dynamic programs with any behavior (regular or irregular) for different constraints (performance, power consumption) on scalar and multi-core heterogeneous systems. It does not require complex run-time recompilation frameworks and thus reliable, secure and easy to debug. This is of particular importance for new multi-core and heterogeneous computing systems (CELL, SUN T1, Intel TeraScale, various GPU architectures). We are currently implementing this framework for GCC and as a source-to-source tool for any compiler.

Some references: HiPEAC'05 paper and bib; GCC Summit'07 paper and bib; HiPEAC cluster.

[ Sourceforge development site ]



If you have any questions, comments, suggestions,
would like to discuss research, visits, funding, consultancy, etc,
please don't hesitate to contact us