Another language issue with HPF
was limited support for task parallelism. Users wanted more powerful strategies beyond the parallel loop feature
offered in HPF. This was corrected in
HPF 2.0 but too late for a revival of HPF.
Including features like the OpenMP set
of directives could have helped.
Immature compiler technology. HPF
was defined on top of Fortran 90, the
first major upgrade to the Fortran
standard since 1977. Among the new
features of Fortran 90 were explicit interfaces requiring array descriptors,
recursion, dynamic storage allocation,
and pointer-based data structures.
Building a Fortran 90 compiler meant
a substantial implementation effort
compared with FORTRAN 77—a huge
obstacle on the way to HPF.
Moreover, the features in HPF, including the HPF library, demanded
new compilation strategies that in
1993 at the time of the release of HPF
1.0 had been implemented only in research compilers and the CM Fortran
compiler. Proper compilation of HPF
requires extensive global analysis of
distributions, partitioning of computation, generation of communication,
and optimizations (such as overlapping
communication and computation).
Finally, efficient implementation
of HPF programs required special attention to locality on individual processors. Since many of the processors
used in distributed-memory systems
had complex cache hierarchies, advanced transformation strategies
(such as loop tiling) were becoming
essential to generate efficient code. At
the time of the release of HPF 1.0, these
techniques were beginning to be understood by compiler developers, but
most commercial compilers had not
yet incorporated them. As a result the
first compilers were immature, providing disappointing performance on
many codes.
Barriers to portable performance. A
key goal of HPF was enabling a single
version of a parallel program to achieve
a significant fraction of the possible
performance on a variety of architectures but was difficult to achieve for two
main reasons:
Different optimizations. Different
vendors focused on different optimiza-
tions in their implementations, caus-
ing a single HPF application to deliver
dramatically different performance on
machines from different vendors. In
turn, programmers were forced to re-
code their applications repeatedly to
take advantage of the strengths (and
avoid the weaknesses) of each vendor’s
implementation, thwarting the original
goal of portability.
significant influence
HPF also had significant influence on
development of high-level parallel languages. In 2007, the CiteSeer database
listed 827 citations for the language
definition,
12 making it the 21st
most-cited document in computer science at
the time. In addition, more than 1,500
publications in CiteSeer refer to “High
Performance Fortran,” many including
approaches to implementing or improving the language, reflecting a great
deal of intellectual activity within the
academic community.
Fortran and its variants. Fortran 95.
While the meetings leading to HPF 1. 1
were under way, the X3J3 committee of