Locality is also important to scalable machines that support a shared address space in hardware.
Improving locality can greatly enhance the performance of such machines. The mapping of computation onto the processors of a parallel machine is termed the computation decomposition of the program. Similarly, the placement of data into the processors' local memories is called the data decomposition . This paper describes a compiler algorithm that automatically finds the computation and data decompositions that optimize both the parallelism and locality of a program. This algorithm is designed for use with both distributed and shared address space machines.