next up previous contents index
Next: Summary Up: The HPspmd Model and Previous: Datatypes in HPJava

 

Projects in progress

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 gif 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.


next up previous contents index
Next: Summary Up: The HPspmd Model and Previous: Datatypes in HPJava

Guansong Zhang
Mon Feb 8 16:41:16 EST 1999