Abstract

This paper is concerned with techniques for translating array expressions, as found in FORTRAN 8X, into very efficient vector expressions on a machine in which long vectors are needed for high performance. It describes the application of these techniques in a precompiler for the CYBER 205 which requires a vector length of 1000 to achieve 90% of the asymptotic speed. The precompiler does not vectorize FORTRAN 77 DO loops, instead it vectorizes and optimizes programs written in the explicit array syntax of the proposed FORTRAN standard (FORTRAN 8X). The optimization of the vector code is intended to be most effective for algorithms commonly used in finite-difference approximations of partial differential equations. Finite-difference schemes frequently evaluate the same expression over the interior of a multidimensional rectangular array. In these computations the precompiler is able to vectorize arithmetic operations over the entire array, rather than over individual dimensions, thus generating relatively long vectors. This vectorization is done, whenever possible, without using expensive gather operations. When gather operations must be used the precompiler attempts to minimize them by making one gather serve for several operands through the use of masks and offsets.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call