High Performance Fortrans (HPF)

[ Features ]
Principal users of ES are considered to be natural scientists who are not necessarily familiar with the parallel programming or rather dislike it. Accordingly, a higher-level parallel language is in great demand.
HPF/SX provides easy and efficient parallel programming on ES to supply the demand. It supports the specifications of HPF2.0, its approved extensions, HPF/JA, and some unique extensions for ES (Figure 10).

Figure 10: Features of HPF/SX
Included in the ES unique extensions are as follows:

This is a feature for irregular problems such as the finite element method, which have been said to be difficult to be parallelized with HPF [2]. In irregular problems data is accessed and communicated in an irregular manner, that is, data located separately in memory is processed in sequence. Such accesses and communications cannot be handled efficiently by the conventional features of HPF.
HALO enables you to specify explicitly array elements to be accessed or communicated irregularly (Figure 11). The HPF/ES compiler and runtime system can process such user-specified irregular accesses and communications efficiently in a special manner [3].

Figure 11: Example of HALO in FEM: A node on the distribution boundary is allocated as a real object on one processor and as HALO objects on the others, according to the user's declaration. HALO objects can be referenced in the same way as real objects after they are updated by REFLECT directives. It is also possible to execute reduction operations more efficiently using HALO.

* interface to MPI
subroutines A subroutine embedded with MPI library can be invoked from HPF programs, which means that you can replace the part of performance bottleneck in your program with faster MPI subroutines to improve its performance.

* vectorization/microtasking directives
HPF/SX accepts some vectorization/microtasking directives. They are specified for more efficient vectorization and microtasking.