

\part{Distributed data in High Performance Fortran}

     The approach to parallel programming described in part I
using the array syntax of Fortran 90 and HPF, is simple and
surprisingly general.  In practise, though, it is usually too difficult
for a compiler to take an arbitrary program written in this style
and automatically execute it {\em efficiently} in parallel.
To achieve that goal, the compiler will typically need more detailed
information from the programmer about how the problem is to be divided
across the parallel computer.
Most of the HPF extensions to Fortran address the issue
of providing the programmer with means to express this information.

     The second part of this document describes these extensions.
Once again, we will be selective in which parts of the language
are presented here.  Notably, we will not describe dynamic
data mappings, or the new intrinsic or library functions.

     The next section discusses in general terms the problems of
programming distributed memory computers.  This is followed by a section
describing the HPF data mapping directives.  For illustration, it
includes a distributed version of the LU decomposition example
given in part I.  The last section describes the HPF subprogram
interface (passing parameters to procedures is a delicate issue in the
presence of distributed data).

\input{distributed-data}
\input{data-mapping}
\input{procedures}

