John H. Merlin
VCPC, University of Vienna, Liechtensteinstr. 22, A-1090 Vienna, Austria.
Scott B. Baden
Dept. of Computer Science and Engineering, University of California, San Diego, La Jolla, CA 92093-0114, USA.
HPF is an effective language for implementing regular data parallel applications on distributed memory architectures, but by itself it is not well suited to irregular and possibly dynamic block-structured applications such as multiblock and adaptive grid methods.
A solution to this problem is to use a SPMD program to coordinate multiple concurrent HPF invocations, each operating on a regular subgrid of an irregular data domain. To this end we have developed an interface between the C++ class library KeLP, which provides the SPMD coordination layer, and an HPF compiler, SHPF, both of which are available in the public domain. KeLP can dynamically create and distribute multiblock domains, and it allows inter-block communication patterns to be constructed at runtime and preprocessed for efficiency. In a KeLP-HPF program, KeLP handles the data layout and inter-block communications, and it invokes multiple data parallel HPF tasks concurrently, each active on an individual block which is distributed over a subset of processors.
There are a number of advantages to this approach: it combines the strengths of both KeLP and HPF; it is relatively easy to implement; and it involves no extensions to the HPF language or compiler. Furthermore, this approach may be generalised to interface HPF to other SPMD coordination libraries, perhaps for the purpose of supporting other application areas.
This presentation will outline what was involved in interfacing KeLP to SHPF, explain the KeLP-HPF programming and execution models (including some issues of SPMD-HPF programming generally), and present performance results for some sample KeLP-HPF applications, such as a multiblock solver and a pipelined 2d FFT.