Projects related to this work include development of MPI, HPF, and other parallel languages such as ZPL[] and Spar[]. Here we explain the background and future developments of our own project.
The work originated in our compilation practices for HPF. As described in [], our compiler emphasize runtime support. Adlib[], a PCRC runtime library, provides a rich set of collective communication functions. It was realized that by raising the runtime interface to the user level, a rather straightforward (compared to HPF) compiler could be developed to translate the high level language code to a node program calling the runtime functions.
Currently, a Java interface has been implemented on top of the Adlib library. With classes such as Group, Range and Location in the Java interface, one can write Java programs quite similar to HPJava proposed here. But a program executed in this way will have large overhead due to function calls (such as address translation) when accessing data inside loop constructs. Given the knowledge of data distribution plus inquiry functions inside the runtime library, one can substitute address translation calls with linear operations on the loop variable, and keep inquiry function calls ``outside the loop''.
At the present time, we are implementing the translator. Further research work will include optimization and safety-checking techniques in the compiler for HPspmd programming.
Figure shows a preliminary benchmark for hand
translated versions of our examples. The parallel programs are executed
on 4 sparc-sun-solaris2.5.1 with MPICH and Java JIT compiler in
JDK 1.2Beta2. For Jacobi iteration, the timing is for about 90
iterations, the array size is 1024X1024.
Figure: Preliminary performance
We also compared the sequential Java, C++ and Fortran version of the code, all with -O flag when compiling. The dotted lines shown in the figure only represent times for the one processor case. We can see that on a single processor, Java program use language own mechanism for calculating array element address, it is slower than HPJava, which uses an optimized scheme. We emphasize again that in the picture we are comparing sequential Fortran, etc with parallel HPJava. This is not supposed to be an comparative evaluation of the various languages. It is just supposed to give an impression of the performance ballpark Java is currently operating in.