A High Performance Fortran compilation system

SHPF home - Download - Papers - HPF - IDA

SHPF is a public domain High Performance Fortran 2.0 (HPF) compilation system.

The SHPF release contains two main components: a translator, ADAPT, and a runtime library, ADLIB. ADAPT transforms an HPF program into a Fortran 90 program that runs on each processor of the target computer or computer network. The generated program is in standard Fortran 90 and can be compiled by a normal Fortran 90 compiler for the target machine. It accesses non-local data by calling communications routines from the ADLIB library.

The source code of ADAPT and ADLIB are provided. ADAPT is written in C, and ADLIB in C++ with communications implemented in the standard message-passing interface, MPI. Therefore to install SHPF one requires C and C++ compilers to compile ADAPT and ADLIB, a Fortran 90 compiler to compile the output of ADAPT, and an MPI installation, and SHPF is portable to any platform that has these 4 items. Public domain implementations of C, C++ and MPI are available, as detailed in the installation notes.

SHPF accepts the HPF 2.0 language, as defined in the HPF 2.0 Language Specification, in both fixed and free source form, with a few restrictions that are listed in the release notes. It recognises full HPF, including full Fortran 90, and gives error messages upon encountering unsupported features. Parallel execution is obtained from the use of Fortran 90 array syntax.

A primary objective in developing this system was to implement HPF's data mapping features (i.e. alignment and distribution) in their full generality, and this has been quite well achieved. For example, it supports alignments of any complexity, and all distribution formats, in any number of data and processor array dimensions; multiple processor arrays can be used; distributed data can be used in any context, including subscripts; any number of levels of indirect addressing (or equivalently vector subscripting) are allowed; array sections can be passed as procedure arguments; and redistribution can occur across procedure boundaries.

The runtime library, ADLIB, provides high-level, array-based collective communications. It is a C++ class library with communications implemented in MPI. As well as providing HPF runtime support, it can also be used directly for distributed data parallel programming in C++ (see the ADLIB report).

SHPF was developed by enhancing the earlier ADAPT system, which originally accepted Fortran 90 supplemented by ad hoc data distribution extensions, to HPF. Development of the system is ongoing, and new releases will appear from time to time. Feedback of any kind, e.g. reports of installation problems or bugs, requests for the implementation of unsupported features, other suggestions for improvement, evaluation results, and (especially) praise, is always welcome, and should be addressed to John Merlin,

SHPF was developed by:

John Merlin ( ADAPT and SHPF dirver script.
Bryan Carpenter ( ADLIB and SHPF driver script.

SHPF home - Download - Papers - HPF - IDA

John Merlin (
Last updated Tue Apr 29 1998.