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:
* HALO
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.