We have discussed the design and development of mpiJava--a pure Java interface to MPI. Our performance tests have shown that mpiJava should fulfill the needs of MPI programmers not only in terms of functionality but also in terms of good performance when compared to similar C MPI programs.
In both shared memory and distributed memory modes mpiJava adds a
fairly constant overhead compared to normal native MPI. In an
environment like WMPI, which has been optimized for Windows NT, the
actual overheads of using mpiJava are relatively small at around
100ms. Under MPICH the situation is not quite so good, here the use of
mpiJava introduces an extra overheads of between 250-300
s.
It should be noted that these results compare codes running directly
under the operating system with those running in the JVM. For example,
according to a single 200 MHz PentiumPro will achieve in excess of 62
Mflop/s on a Fortran version of LinPack. A test of the Java LinPack
code gave a peak performance of 22 Mflop/s for the same processor
running the JVM. The difference in performance will account for much
of the additional overhead that mpiJava imposes on C MPI codes. The
quality and performance of JVM on each platform will have the greatest
effect on the usefulness of mpiJava for scientific computation.
We also suggested required environment to make mpiJava run on different platforms including Linux. On these platforms, several parallel applications including Potts model simulation using Java AWT for GUI have been implemented. These applications will be covered in Chapter 6 with their performance evaluation.