In this chapter we discussed motivations for introducing an HPspmd programming model: a SPMD framework for using libraries based on distributed arrays. It adopts the model of distributed arrays standardized by the HPF Forum, but relinquishes the high-level single-threaded model of the HPF language. This makes compilers or translators for the HPspmd-extended languages a relatively straightforward proposition. As a concrete example, we described the specific syntax of HPJava.
Two recent languages that have some similarities to our HPspmd languages are F- - and ZPL. F- - [#!FMM!#] is an extended Fortran dialect for SPMD programming. The approach is different to the one proposed here. There is no analogue of global subscripts, or HPF-like distribution formats. In F- - the logical model of communication is built into the language--remote memory access with intrinsics for synchronization--where our basic philosophy is to provide communication through separate libraries. ZPL [#!ZPL!#] is a array parallel programming language for scientific computations. It has a construct for performing computations over a region, or set of indices, quite similar to our overall construct. Communication is more explicit than HPF, but not as explicit as in the language discussed in this article.
At the time of writing the HPJava translator is partially operational. All examples given in this chapter can be compiled and run. Ongoing work will complete the functionality, and add some optimization for the generated code. The language definition calls for full compile-time or runtime checking of the constraints on locality of reference. The translator will be enhanced to add these.
In the next chapter we will further discuss the mpiJava library briefly mentioned in the previous section.