HPF/JA: HPF Extensions for Real-World Parallel Applications

Yoshiki Seo, NEC Corp. (seo@ccm.cl.nec.co.jp)

Hidetoshi Iwashita, Fujitsu Ltd. (hideto@spp.hpc.fujitsu.co.jp)

Hiroshi Ohta, Hitachi Ltd. (ohta@sdl.hitachi.co.jp)

Hitoshi Sakagami, Himeji Inst. Tech. (sakagami@comp.eng.himeji-tech.ac.jp)

Shun Takahashi, Hitachi Ltd. (shunchan@erl.hitachi.co.jp)


Abstract

JAHPF (Japan Association for High Performance Fortran) is a coalition of about 20 compiler vendor members and 20 HPC user members in Japan to promote the HPF language. It started 1996 and its major activities under way are as follows:

We developed the first version of HPF/JA which includes the following functionalities:

Asynchronous communication
This enables users to explicitly specify the possibility of overlapping communication and computation in a similar way to asynchronous I/O in the HPF2.0 approved extensions.

User controllable SHADOW
In HPF/JA, the coherence of the SHADOW data can be controlled with a REFLECT directive to reduce the communication to it. Moreover, overlapped computation in it to reduce communication can be specified with EXT_HOME clause in an ON directive.

Reduction kind
In HPF/JA, reduction variables may be referred to in any syntax, even in procedure calls, as long as a user specifies the reduction kind in the REDUCTION clause, while HPF2.0 allows reduction variables to appear only in restricted forms of reduction statements.

Communication schedule reuse for irregular array accesses
Generating efficient communications for unstructured programs is essential to improve the applicability of data parallel languages. UNCHANGED_INDEX directive gives users a handle to assert that data access patterns for a specific indirect array access remain the same through multiple invocation of the enclosing DO loop, in order to reduce the cost of generating communication patterns.

Parallelization support for loops including procedures calls with side effects
HPF/JA allows a user to describe exact array access range information in an INTERFACE BLOCK for parallelizing a loop including procedure calls with side effects.

In the talk we first present the specification of the above extensions. Then we discuss their applicability to the following application programs:

Notes by Chuck Koelbel