Data and computation alignment is an important part of compiling sequential programs to architectures with non-uniform memory
access times. In this paper, we show that elementary matrix methods can be used to determine communication-free alignment
of code and data. We also solve the problem of replicating data to eliminate communication. Our matrix-based approach leads
to algorithms which work well for a variety of applications, and which are simpler and faster than other matrix-based algorithms
in the literature.
An earlier version of this paper was presented in the 7th Annual Workshop on Languages and Compilers for Parallel Computers
(LCPC), Ithaca, 1994.