HPF is an extension of Fortran 90. The array calculation and dynamic
storage allocation features of Fortran 90 make it a natural base for
HPF. The new HPF language features fall into four categories with
respect to Fortran 90:
- New directives;
- New language syntax;
- Library routines; and
- Language changes and restrictions.
The new directives are structured comments that suggest implementation
strategies or assert facts about a program to the compiler. They may
affect the efficiency of the computation performed, but do not change
the value computed by the program. The form of the HPF directives has
been chosen so that a future Fortran standard may choose to include
these features as full statements in the language by deleting the
initial comment header.
A few new language features, including the FORALL statement and a few
intrinsic functions, are also defined. They were made first-class language
constructs rather than comments because they can affect the
interpretation of a program, for example by returning a value used in
an expression. These are proposed as direct extensions to the
Fortran 90 syntax and interpretation.
The HPF library of computational functions defines a standard interface
to routines that have proven valuable for high performance computing
including additional reduction functions, combining scatter functions,
prefix and suffix functions, and sorting functions.
Two small changes are made in the Fortran 90 specification. First, a
DIM argument is added to the MINLOC and
MAXLOC routines. Second, in the list of keyword specifiers
for the I/O INQUIRE statement, the types of RECL,
NEXTREC, and IOLENGTH are changed to
scalar-integer-variable (from
scalar-default-integer-variable) in order to allow for very long
files that may occur in large parallel applications.
Full support of Fortran sequence and storage association is not
compatible with the data distribution features of HPF. Some
restrictions on the use of sequence and storage association are
defined. These restrictions may in turn require insertion of HPF
directives into standard Fortran 90 programs in order to preserve
correct semantics.