next up previous contents
Next: MasPar Programming Language Up: Parallel programming languages Previous: Parallel programming languages

High Performance Fortran

High Performance Fortran (HPF) [] is an emerging language, of which Fortran 90 is a subset used on sequential computers. Compared to Fortran 90, the syntax of HPF is enhanced, with the possibility to provide hints about program and data structure, but is otherwise much the same.

Unlike Fortran 77, HPF and Fortran 90 are able to operate on arrays in a data parallel way, by performing an operation for an entire array, or a part of an array, which is possibly distributed over a processor mesh, e.g. C = A + B, where A, B and C are arrays. This makes it possible for the compiler to optimize such operations for a parallel environment. It is also possible to specify subroutines or functions that will run sequentially as parts of the parallel operation.

The extensions of HPF, as compared to Fortran 90, are mostly means to give the compiler hints about how the data should be stored globally, or how they will be accessed in relation to other data. These hints are given in the form of specially encoded comments, which the compiler may or may not heed. The compiler may then build the program with the necessary optimizations for a flexible parallel computer.

The HPF language enables the programmer to specify what a parallel application should do, in a sequential manner, without having to bother with the messy parallel details, but gives the programmer the option to advise the compiler on how the data should be organized. A problem with this approach (as mentioned above) is that the programmer must be careful when optimizing his program, because the compiler may not be able to parallelize the code. This is a problem not just for parallelizing compilers, but also for optimizing compilers, and requires advanced compilers even for code that is not particularly tuned.


next up previous contents
Next: MasPar Programming Language Up: Parallel programming languages Previous: Parallel programming languages