 |
|
 |
|
[Back to Research topics] |
EOS (Edinburgh Optimizing Software)
|
Description
Collaborations
Software
Our related publications
Links
|
|
Description: |

During my PhD at the University of Edinburgh (1999-2004), together with Prof. Michael O'Boyle, we introduced iterative compilation (iterative program optimizations) at a fine-grain (function, loop or instruction level) for applications of any size (rather than just kernels) to automatically find best optimization settings on rapidly evolving architectures that beat state-of-the art optimizing compilers. At the same time I had been developing Edinburgh Optimizing Software - a toolset for iterative optimizations and performance
prediction on a loop-level for various platforms and languages.
Due to simple component java client/server architecture it is easy to
compile this framework on such architectures as x86 (Linux, Windows),
Itanium, PowerPC, UltraSparc, Alpha, etc (though gcc 3.x is
required to compile Transformation Server on Linux; so far there
is no limit on the compiler for Windows). It supports PAPI library for the collection of hardware counters information on a procedure or loop level.
Though I do not support it anymore, it is still used in several M.S. and Ph.D. projects, and for teaching purposes. You can download it here (under GPL license):
EOS tar-ball with all servers, tools and clients (including source code)
eos.tar.gz [6Mb] (2006.Jan.27)
In order to make this toolset easily portable and flexible,
a client/server architecture is used as shown in the following figure:
It consists of autonomous components such as servers, clients and a shared
network file system. These components communicate with each other over
the network using data files on the shared file system and using standard
telnet protocol as shown by arrows in the above figure. Servers perform
various analysis and optimisation tasks on the target platform, while
the client is a Graphical User Interface (GUI) application that enables
users to interact with servers remotely. A client is platform independent
and can access various platforms, obtain and present results in a
convenient way.
This software architecture is flexible since it is easy to update the software
and add new tools without the need to stop and restart all components.
It supports auto error and fault recovery as servers can be restarted and
the analysis and optimisation process can continue from the last correct
state.
This toolset contains the following components:
This server is used to enable and ease portability between different
platforms. It is platform dependent and is used to execute
applications and obtain their run-time parameters. It is
written in C and uses low-level OS calls. It is one of the only servers that needs to be recomiled on each new platforms - most of the remaining
software is written in Java and thus portable across platforms.
This server deals with a program project management: compile programs, recompile only necessary parts of big projects, visualizes program loop structure, executes additional support tools, etc ...
- EOS Transformation Server ( readme )
This server enables source-to-source transformations for Fortran (and partially for C) programs. I implemented the following transformations: array padding, loop tiling and unrolling. I started implemented additional transformations but didn't have enough time to thoroughtly test them: loop interchange, loop strip-mining, loop splitting, loop distribution and array global index reordering. This server uses Octave library
(Fortran, C, C++, Java front-ends) which was originally developed by
Prof. Nigel Topham
This server is mainly used to collect various profiling information for a whole program or on a procedure or loop levels.
- EOS Memory Problem Checker (Performance Prediction) Server ( readme, server.cfg )
This server predicts memory upper-bound performance and is used to guide iterative optimizations and to quickly calculate prefetch distances at run-time. This server uses an additional tool I developed in 2002 for dynamic program instrumentation on Intel processors similar to ATOM. I use this tool to dynamically instrument all program memory instructions and enable self-modification/self-removal of these instructions to quickly collect and analyze memory access traces. More information can be found in my PhD thesis, CPC'01 and CPC'04 papers.
This is the main server to apply iterative optimizations for Fortran programs on a loop level. The following search strategies have been implemented:
- simple "one by one" (with hill-climbing)
- random
- grid
- parallel (when all loops are optimized at the same time and later interference between loops is analyzed)
More information can be found in my PhD thesis and LCPC'02 paper.
- Static and dynamic program instrumentation tool
When I started working on iterative optimizations in 1999, I experimented a lot with Alpha platform and used ATOM tool for my research on performance prediction to dynamically instrument programs. Gradually I moved to Intel and AMD platforms, and in 2001 started developing a new tool for dynamic instrumentation of programs similar to ATOM and working on Linux and Windows. I used it for my research on memory upper-bound performance prediction and for calculating prefetching distances. I also used this tool to dynamically instrument all program memory instructions and enable self-modification/self-removal of these instructions to quickly collect and analyze memory access traces. I didn't have time during PhD to finish developments and recently found a new tool called Pin that performs dynamic instrumentation of programs on Intel platforms. It is well supported, so I stop my developments and strongly suggest for those who still use my dynamic instrumentation tool, to gradually move to Pin.
- Program project handling ( description )

This is a simple and intuitive GUI environment for iterative optimizations.
Based on my previous experience on iterative optimizations, I started building Interactive Compilation Interface (ICI) for PathScale EKOPath compiler in 2004 to improve its optimization heuristic, enable fine-grain program optimizations for different constraints (performance, code size, power consumption, DSE, different ISAs, etc) and unify optimization knowledge reuse among different programs and architectures using statistical and machine learning techniques (our paper from SMART'07, our presentation from HiPEAC GCC Tutorial'07). Recently, this project got support from several universities and companies, and we are now building a new ICI for the GCC with the help of a HiPEAC engineer. We expect that using ICI will help cleaning up GCC and turn it into component-based pluggable compiler with easily extendable and automatically tunable optimization heuristic.
I now use ICI in most of my projects:
|
| Software: |
Collaborations: |
More Information about my software developements
|
This software has been used in the EU MHAOTEU project (Memory Hierarchy Analysis and Optimization Tools for the End-User) together with
- University of Edinburgh(UK)
- UPC (Barcelona)
- INRIA (France)
- University of Versailles (France)
- ONERA (France)
|
|
Our related publications: |
-
Grigori Fursin, Cupertino Miranda, Olivier Temam, Mircea Namolaru, Elad Yom-Tov, Ayal Zaks, Bilha Mendelson, Phil Barnard, Elton Ashton, Eric Courtois, Francois Bodin, Edwin Bonilla, John Thomson, Hugh Leather, Chris Williams, Michael O'Boyle. MILEPOST GCC: machine learning based research compiler. Proceedings of the GCC Developers' Summit, Ottawa, Canada, June 2008
[bib] [pdf]
- Grigori Fursin. Iterative Compilation and Performance Prediction for Numerical Applications. Ph.D. thesis, University of Edinburgh, Edinburgh, UK, January 2004
[bib] [pdf] [pdf backup]
- G.G.Fursin, M.F.P.O’Boyle, and P.M.W. Knijnenburg. Evaluating Iterative Compilation. Proceedings of the 15th Workshop on Languages and Compilers for Parallel Computing (LCPC’02), College Park, MD, USA, pages 305-315, 2002
[bib] [pdf]
- Abella, J., S. A. Ali Touati, A. Anderson, C. Ciuraneta, J. M. Codina, Min Dai, C. Eisenbeis, G. Fursin, A. Gonzalez, J. Llosa, M. O'Boyle, A. Randrianatoavina, J. Sanchez, O. Temam, X. Vera, and G. Watts. MHAOTEU Tools for Memory Hierarchy Management. IMACS’2000, 16th IMACS World Congress on Scientific Computation, Applied Mathematics and Simulation, Lausanne, Switzerland, August 2000
[bib] [pdf]
All my publications My bibliography collection
My links to on-line journals and conference
|
|
Links: |
- PathOpt and PathOpt2 - automated application tuning - free tool within commercial open-source compiler (iterative optimization tool for compiler flags from PathScale available since 2003)
- PAPI library - performance application programming interface
- OProfile - a system profiler for Linux
- Papiex - command line PAPI measurement tool
|
|
 |
|
|
|
 |
|