# Perfect Loop Nests

Part of the Loop Transformation for Restructuring Compilers book series (LTRC, volume 3)

## Abstract

In Chapter 2, we gave a detailed introduction to the concepts and techniques of dependence analysis using a single loop as the model. In Chapter 3, we showed how things can become complicated very quickly when there are two loops to deal with. The model for this chapter is a perfect nest of an arbitrary number of loops. Our goal is to properly formulate the linear dependence problem in the context of such a program. We will not discuss methods of solution in this chapter except in some special cases (Section 4.6) and examples. Matrix notation becomes almost a necessity at this point; without that, we run the risk of drowning in a sea of subscripts. The reader should keep on hand a double loop of the form
$$\begin{gathered} L_1 :do I_1 = p_{10} ,q_{10} ,\theta _1 \hfill \\ L_2 :do I_2 = p_{20} + p_{21} I_1 ,q_{20} + q_{21} I_1 ,\theta _2 \hfill \\ H(I_1 ,I_2 ) \hfill \\ enddo \hfill \\ enddo \hfill \\ \end{gathered}$$
where p10, q10, p20, p21, q20, and q21 are integer constants, and try to understand the results and notation of this chapter first in terms of that particular perfect nest. Note that in Chapter 3, we wrote p1 for p10, and q1 for q10.

## Keywords

Direction Vector Integer Solution Iteration Space Distance Vector Iteration Variable
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.