High Performance Fortran (HPF) is the de facto standard language for writing data parallel programs. For distributed memory architectures, HPF compilers emulate the global address space by distributing the arrays among the processors according to the mapping directives of the user and by generating automatically explicit interprocessor communication.
In this paper we discuss the use of shadow edges within HPF applications. A shadow is additionally allocated local memory to keep on one processor also non-local values of the same distributed array that are accessed or defined on this processor. While shadow edges are already well studied for structured grids, this paper focus on its use for unstructured applications where updates on the shadow edges involve unstructured communication with complex communication schedules.
As the most flexible and the most efficient approach, we define a library with a HPF binding that allows the explicit control of unstructured shadows and their communication schedules, also called halos. This halo library allows writing HPF programs with a performance close to hand-coded message-passing versions but where the user is freed of the burden to calculate shadow sizes and communication schedules and to do the exchanging of data with explicit message passing commands.
Furthermore, this paper discusses the use of halos by language features in HPF and the completely automatic use of halos by the HPF compiler. It outlines how the HPF compiler has to be extended to use the functionality of the halo library and shows the advantages and also the limits of these approaches.
The halo library and an automatic support of halos have been implemented within the ADAPTOR HPF compilation system that is available in the public domain. Example programs of typical simulation codes show the use of the concepts and the results verify the efficiency of the chosen approach.