Iterative Optimization in the Polyhedral Model: Part II, Multidimensional Time
Abstract
High-level loop optimizations are necessary to achieve good performance
over a wide variety of processors. Their performance impact
can be significant because they involve in-depth program transformations
that aim to sustain a balanced workload over the computational,
storage, and communication resources of the target architecture.
Therefore, it is mandatory that the compiler accurately models
the target architecture as well as the effects of complex code
restructuring.
However, because optimizing compilers (1) use simplistic performance
models that abstract away many of the complexities of
modern architectures, (2) rely on inaccurate dependence analysis,
and (3) lack frameworks to express complex interactions of transformation
sequences, they typically uncover only a fraction of the
peak performance available on many applications. We propose a
complete iterative framework to address these issues. We rely on
the polyhedral model to construct and traverse a large and expressive
search space. This space encompasses only legal, distinct versions
resulting from the restructuring of any static control loop nest.
We first propose a feedback-driven iterative heuristic tailored
to the search space properties of the polyhedral model. Though, it
quickly converges to good solutions for small kernels, larger benchmarks
containing higher dimensional spaces are more challenging
and our heuristic misses opportunities for significant performance
improvement. Thus, we introduce the use of a genetic algorithm
with specialized operators that leverage the polyhedral representation
of program dependences. We provide experimental evidence
that the genetic algorithm effectively traverses huge optimization
spaces, achieving good performance improvements on large loop
nests with complex memory accesses.