Skip to main content

Expert System for Tuning Optimizations (ESTO)

A tool that tunes the set of parameters for optimizing a specific target program.

Date Posted: August 23, 2007

alphaworks tab navigation

 

What is Expert System for Tuning Optimizations (ESTO)?

ESTO automates the process of identifying and tuning the optimal set of optimization options used when generating performance-optimized programs. A typical use is for tuning, for maximum performance, the optimization options used by a compiler when creating an application.

ESTO is currently geared toward tuning GCC and Post-Link Optimization for Linux® on POWER® (also known as FDPR-Pro). In FDPR-Pro, as with many compilers, the set of possible optimizations is large. In addition, some of the options require an additional parameter, which makes the selection process even more complex. Selecting the optimal set for a given application is complex because optimization options do not necessarily add performance when combined with other options or when used for certain application and a certain workload.

As a result of this complexity, users tend to use combination options, such as -O, O1, etc. These combinations select a subset of the optimization options that have shown up in order to provide stable, high performance for numerous applications. Thus, in general, these options are not the optimal set for a specific application executing its representative workload.

How does it work?

Our goal is to find the "optimal combination" of parameters for each concrete target program. The search occurs in several iterations:

  1. Set optimization parameters.
  2. Run the program optimizer.
  3. Run the generated program.
  4. Measure the performance.
  5. Decide how to continue.

This general approach is known as "iterative compilation" and can be implemented by a number of iteration algorithms. By default, ESTO uses adaptive genetic algorithm with exponential population reduction. The default parameters (initial population, reduction/mutation/crossover rates, etc.) typically result in about 120 iterations. A user can configure the algorithm type and its numeric parameters, the optimizer options syntax, optimization and measurement invocations, and possible multiprocessing.

Although it is not possible to prove that the optimal combination is indeed optimal in the absolute sense, it would be optimal in the sense that no significantly better set (more than a fraction of a percentage) can be found for most of the applications tested.

This distribution provides ESTO binaries, scripts, documentation, and examples for Linux on Power, as well as ESTO configurations for GCC versions 3.3.3, 4.0.0, 4.1.0, and for FDPR-Pro.

About the technology author(s)

Guy Bashkansky has worked in the Code Optimization Technology department at the IBM Haifa Research Lab since 2004. He is the developer of ESTO. Mr. Bashkansky earned his M.Sc. in computer science at Haifa Technion.

Yaakov Yaari earned his Ph.D. from Bar-Ilan University in Israel. He has worked in the Code Optimization Technology department at IBM Haifa Research Lab since 2001. Dr. Yaari oversees the ESTO project.

Trademarks