Empirical Optimization

Empirical program optimization is the process of using empirical search to make optimization decisions. Such decisions might be the choice of values for optimization parameters or even the choice of an appropriate algorithm. The heart of the search is a generate and test routine. Using a current set of optimization decisions it generates code, compiles it, executes it, and based on its performance chooses a new set of optimization decisions. The process repeats until a satisfactory performance level is achieved.

Some examples of tools that use empirical search for program optimization are ATLAS (for generating high-performance BLAS libraries) and FFTW (for generating FFT libraries). These tools fall in the category of library generators, i.e. they are not general-purpose compilers, but rather they concentrate on a specific problem in a specific domain and generate libraries that provide a high-performance solution to the problem. It is widely believed that empirical optimization is more effective than model-driven optimization.

Our work in the area is in the directions of combining empirical search and traditional model-based optimization and integrating the results into conventional compilers, which currently are not at all competitive with library generators. This is a very ambitious goal and therefore the work has to go into several phases:

The ultimate goal is to incorporate all these results in a general purpose compiler.

Publications: