The Java-Ad programming model is a flexible hybrid of the SPMD1 and data parallel approaches to parallel programming. It provides HPF-like distributed arrays as language primitives, and new distributed control constructs to facilitate access to the local elements of these arrays. In the SPMD mold, the model allows processors the freedom to independently execute complex procedures on local elements: it is not restricted by SIMD-style array syntax.
In Java-Ad, all access to non-local array elements must go through library functions--typically collective communication operations. This puts an extra onus on the programmer; but making communication explicit encourages the programmer to write algorithms that exploit locality, and simplifies the task of the compiler writer. On the other hand, by providing distributed arrays as language primitives we are able to simplify error-prone tasks such as converting between local and global array subscripts and determining which processor holds a particular element. In the Java-Ad model the programmer never has to deal explicitly with local array subscripts. As in HPF, it is possible to write programs at a natural level of abstraction where the meaning is insensitive to the detailed mapping of elements. Lower-level styles of programming are also possible.
Our Java-Ad compiler will be implemented as a translator to ordinary Java with calls to a suitable run-time library. At the time of writing the underlying library is already available, and the interface needed by the Java-Ad translator is under development. The translator itself is being implemented in a compiler construction framework developed in the PCRC project.