Extending HPF for Advanced Data Parallel Applications

Objective: To design High Performance Fortran extensions for exploiting parallelism in complex data parallel applications of interest to NASA such as block-structured and unstructured grid codes.

Approach: The stated goal of High Performance Fortran (HPF) was to ''address the problems of writing data parallel programs where the distribution of data affects performance.'' However, on evaluating the current version of the language, it is clear that HPF has not fully achieved this goal. In particular, it does not provide support for distribution strategies required for complex data parallel applications such as block-structured and unstructured grid codes. The approach taken here is to study the requirements of the application codes and suggest extensions and modifications for HPF which ease the task of expressing the necessary distributions in a simple and portable manner.

Accomplishment: High Performance Fortran has been designed to facilitate data parallel programming on a wide range of parallel architectures without sacrificing performance. Its principal focus is a set of directives for Fortran 90 designed to express the data distributions required for data parallel applications. We have been evaluating the effectiveness of HPF for complex NASA codes and based on this evaluation have proposed a set of extensions for HPF. These include: processor views (for matrix algorithms), distribution to subsets of processors (for multigrid and block-structured algorithms), general block distributions (for load balancing, e.g., in PIC and DSMC codes), indirect distributions (for unstructured grids), and user defined distributions and alignments (for unstructured grids and other complex applications). Full details of these extensions can be found in [1].

One area of focus has been block-structured grid codes, where the fundamental issue is distributing the individual blocks such that one can exploit both interblock and intra-block parallelism. HPF currently provides little support for such distributions. We have designed extensions to HPF which allow the user to map the blocks over subsets of processors thus providing the capability of exploiting both levels of parallelism. Implementation in the Vienna Fortran Compiler System has demonstrated the feasibility of using these extensions for multi-block codes.

Another area of research has been unstructured grid codes which need finer control over the distribution of the grid. The indirect distribution and user defined distributions and alignments provide such control, allowing the nodes and edges of the grid structure to be mapped individually to the underlying processors.

We have also designed language extensions, called Opus [2], for expressing the outer level functional parallelism exhibited by multidisciplinary codes. The tasking layer can be used to exploit the coarse grained parallelism across disciplines and the interdisciplinary sharing of data. At the same time, parallelism within each discipline can still be expressed via HPF, since the tasking layer is well integrated with HPF. Preliminary work on the programming environment using this tasking layer has begun, along with a runtime system which will support this approach in an heterogeneous environment.

Significance: High Performance Fortran is the first step towards a portable programming language for data parallel applications. The extensions and modifications proposed here extend this capability allowing more complex data parallel applications to be easily expressed at a high level. These extensions have been presented to the High Performance Fortran Forum which is currently conducting a second round of meetings to generate a set of requirements for future extensions.

Status/Plans: We will continue evaluating the effectiveness of HPF for NASA codes and, based on our results, continue to design extensions of HPF and compiler technology needed to handle a broader range of scientific applications.

Point of Contact:


Return to the Table of Contents



curator: Larry Picha