It plays an important role in improving cache performance and making effective use of parallel processing capabilities.
Most execution time of a scientific program is spent on loops; as such, many compiler optimization techniques have been developed to make them faster.
The application of a unimodular transformation corresponds to the multiplication of the points within this space by the matrix.
Imperfectly nested loops and some transformations (such as tiling) do not fit easily into this framework.
The polyhedral model[7] handles a wider class of programs and transformations than the unimodular framework.
Affine transformations are applied to these polytopes, producing a description of a new execution order.