HPF allows the mapping of
variables across multiple processors in order to improve
parallel performance. FORTRAN 77 and Fortran 90 both specify
relationships between the storage for data objects associated
through COMMON and EQUIVALENCE statements, and the order of
array elements during association at procedure boundaries
between actual arguments and dummy arguments.
Otherwise, the location of data is not constrained by the
language.
COMMON and EQUIVALENCE statements constrain the alignment
of different data items based on the underlying model
of storage units and storage sequences:
Storage association is the association of two or more
data objects that occurs when two or more storage sequences
share or are aligned with one or more storage units.
- Fortran Standard (14.6.3.1)
The model of storage association is a single linearly
addressed memory, based on the traditional single address
space, single memory unit architecture. This model can cause
severe inefficiencies on architectures where storage for
variables is mapped.
Sequence association refers to the order of array elements
that Fortran requires when an array expression or array
element is associated with a dummy array argument:
The rank and shape of the actual argument need not agree
with the rank and shape of the dummy argument, ...
- Fortran Standard (12.4.1.4)
As with storage association, sequence association
is a natural concept only in systems with
a linearly addressed memory.
As an aid to porting FORTRAN 77 codes, HPF allows codes that
rely on sequence and storage association to be valid in HPF.
Some modification to existing FORTRAN 77 codes may
nevertheless be necessary.
This chapter explains the relationship between HPF data
mapping and sequence and storage association.