ABSTRACT

At the end of the 1970s, vectorization was an emerging technology. Cray Research had released a vectorizing compiler and small software firms were developing preprocessors that would convert the input program into either vectorizable Fortran or calls to vector processing libraries. Choice of language is one of the first things that determines how well the compiler will be able to understand how to optimize critical parts of the application. The compiler will try to align arrays to utilize cache effectively; however, the semantics of the language do not always allow the compiler to move the location of one array relative to another. The Fortran compiler knows things about the array, such as its length and stride. Through the Fortran standard, the compiler can also know that the array is not aliased. The compiler has to assume that the order and grouping of the subexpressions can be changed without altering the result.