An important issue facing users who develop applications on PVM is that of partitioning the data over the different processors and generating communication statements for non-local data accesses. The burden of generating communication statements is alleviated by data parallel languages like HPF. HPF requires the user to specify the distribution of the data in the application. This distribution is specified over the processors on which the application is to execute. A good data distribution depends on the number of processors, the communication latency and the underlying compilation system. We present a method for automatically generating a dynamic data distribution and alignments for a distributed memory environment. This method has been implemented in an automatic data distribution tool called ADDT. ADDT reads in a shared memory parallel program in Fortran and generates as output a HPF program. Our method works by breaking up the input program into sub parts called distribution blocks (DB). It then obtains a set of data distribution for the arrays in each DB using the data layouts from preceding DB's. The algorithms used to obtain a set of data distribution (called candidate distributions) for a DB are discussed. The final data layout for the program has to be selected from these candidate distributions. This selection is formulated as a linear optimization problem which minimizes the communication while minimizing loss of parallelism. We present experimental results obtained by running ADDT on some example programs.
['H. Sivaraman', 'Cauligi S. Raghavendra']
ADDT: automatic data distribution tool for porting programs to PVM