contributed;articles
Doi: 10.1145/2018396.2018415
HPF pioneered a high-level approach
to parallel programming but failed
to win over a broad user community.
By keN keNNeDy, chaRLes koeLBeL, aND haNs zima
the Rise and
fall of high
Performance
fortran
received by the community, generating
a great deal of interest in the language
and its implementation, but never succeeded in building a strong user base.
We concentrate on the technical and
social process of designing HPF, as
well as the factors that contributed to
its successes and its shortcomings.
HPF was one of many efforts to
develop parallel programming techniques active since the late 1980s.
Here, we do not treat these efforts comprehensively or review all work prior
to HPF; more on these topics can be
found in the conference version of this
article15 and in the History of Programming Languages conferences (http://
www.acm.org/sigplan/hopl). Rather,
we provide background on the parallel
computers and programming systems
available when HPF was developed,
then turn to the process of defining
HPF, the features of the language itself,
and its successes and failures. We conclude with a discussion of lessons to
be learned by developers and users of
other languages.
PArALLeLiSm—the exeCUtion of multiple tasks at
the same time—is fundamental in computer design.
even very early computer systems employed low-level parallelism (such as overlapping input-output
with computing). Later designs moved parallelism to
higher levels, including vector processors in the 1970s
and shared-memory and distributed-memory parallel
supercomputers in the 1980s. Software support for
these machines never fully reached the standard of
commercial software development, due mainly to the
specialized market for high-performance computing
and the difficulty related to users’ extreme focus on
target-code performance. Here, we trace the history
of High Performance Fortran (HPF), a high-level data-parallel language standardized by a group of industry
and academic leaders, 1991–1993. It was initially well
Parallel computers and Languages
The milieu in which HPF was created
(see the figure here) guides much of
our discussion, with rectangles representing classes of computers and attached circles representing the most
common programming languages for
key insights
;;; Programming high-performance parallel
computing systems has been dominated
by a low-level approach requiring
explicit management of communication;
hPf elevated parallel programming to
a higher level of abstraction, enhancing
portability, programmer productivity,
and dependability.
;;; many ideas pioneered by hPf (such
as high-level data distribution directives
and parallel loop constructs) have
significantly influenced modern parallel
languages, including chapel, X- 10,
and fortress.
;;; hPf’s expressive power led to early
success, but program performance
could not always match that of
mPi-based programs, resulting in failure
to win over a broad user community.