Early data-parallel programming notations included Kali [200], CM Fortran [282], Fortran D [112], and Vienna Fortran [56]. Other data-parallel languages include *Lisp [281], C* [281], Data-parallel C [136,137], pC++ [38], NESL [37], and DINO [247]. In a rather different approach, several projects have explored the use of C++ class libraries to encapsulate data-parallel operations on data objects such as arrays [83,188].
The compilation of HPF and related languages requires specialized analysis and optimization techniques. Hiranandani et al. [152] and Zima and Chapman [303] provide a good introduction to these topics; see also papers by Albert, Lukas, and Steele [10], Bozkus et al. [42], Callahan and Kennedy [45], Rogers and Pingali [245], and Zima, Bast, and Gerndt [302] and the monographs by Banerjee [27] and Wolfe [296].
The description of F90 and HPF provided here is necessarily brief. See Chapter 6 for F90 references. Loveman [193] provides more information on both the HPF language and the process by which it was designed. The HPF Language Specification prepared by the HPF Forum provides a comprehensive, although sometimes impenetrable, description of the language [149]. The book by Koelbel et al. [176] presents essentially the same information but in a more readable form, and also provides a useful introduction to F90.
Extensions to the data-parallel programming model that would allow its application to a wider range of problems is an active area of research. Chapman, Mehrotra, and Zima [57] propose a range of extensions. Saltz, Berryman, and Wu [251] and Agrawal, Sussman, and Saltz [6] describe techniques for irregular problems. Subhlok et al. [273] generate pipeline parallelism automatically from HPF code augmented with additional directives. Foster [100] discusses issues relating to the integration of task parallelism. Chandy et al. [52] address the integration of HPF and Fortran M.
Here is a Web Tour providing access to additional information on programming in High Performance Fortran, including a specification, information about compilers, and example programs.
© Copyright 1995 by Ian Foster