Early data-parallel programming notations included Kali , CM Fortran , Fortran D , and Vienna Fortran . Other data-parallel languages include *Lisp , C* , Data-parallel C [136,137], pC++ , NESL , and DINO . 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.  and Zima and Chapman  provide a good introduction to these topics; see also papers by Albert, Lukas, and Steele , Bozkus et al. , Callahan and Kennedy , Rogers and Pingali , and Zima, Bast, and Gerndt  and the monographs by Banerjee  and Wolfe .
The description of F90 and HPF provided here is necessarily brief. See Chapter 6 for F90 references. Loveman  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 . The book by Koelbel et al.  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  propose a range of extensions. Saltz, Berryman, and Wu  and Agrawal, Sussman, and Saltz  describe techniques for irregular problems. Subhlok et al.  generate pipeline parallelism automatically from HPF code augmented with additional directives. Foster  discusses issues relating to the integration of task parallelism. Chandy et al.  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