The use of distributed memory architectures as an effective approach to parallel computing brings with it a more complex program
development process. Finding a partitioning of program code and data that supports sufficient parallelism without incurring
prohibitive communication costs is a challenging and critical step in the development of programs for distributed memory systems.
Automatic data distribution techniques have the goal of placing the responsibility of determining a suitable data partitioning
into the domain of the compiler. Static program analysis techniques that expose data interrelationships and derive performance
estimates are central to the development of automatic data distribution heuristics. In this paper we present a data partitioning
heuristic that makes use of array data flow analysis information in the modeling of data interrelationships and the estimation
of costs associated with resolving interrelationships via communication. The global view provided by data flow analysis permits
consideration of potential communication optimizations before data partitioning decisions are made. Our heuristic uses tiling
techniques to determine data partitionings. The resulting data distributions, while still regular, are not limited to the
standard BLOCK, CYCLIC and BLOCK-CYCLIC varieties. Preliminary results indicate an overall reduction in communication cost
with our technique.