8. Java MPI

Neben PVM (Parallel Virtual Machines), das wir in der ersten Auflage noch besprochen haben, erfreut sich in den letzten Jahren der Message Passing Interface (MPI)-Standard einer steigenden Beliebtheit im High Performance Computing. MPI ist zunächst nur eine Spezifikation eines Kommunikationsmodells, es ist keine Computersprache und kein Produkt [MPI94,MPI97]. Allerdings bieten praktisch alle HPC-Computerhersteller eigene Implementierungen von MPI an und es existieren zwei `freie' Implementierungen [ACG$^+$00,SMML00]. MPI kann nach der Spezifikation zusammen mit FORTRAN und C/C++ eingesetzt werden. Das Java Grande Forum bemüht sich seit 1998 um die Einbeziehung von Java in die MPI-Spezifikation [CGJ$^+$98].

MPI definiert Funktionen

Bei der Kommunikationshardware wird insbesondere TCP/IP neben speziellen Highspeed-Netzwerken unterstützt. MPI 1.0 enthält keine Definitionen, wie MPI-Programme gestartet und verwaltet werden sollen, hierfür ist man auf die Unterstützung der jeweiligen Anbieter angewiesen.

MPI 2.0

Bei der Kombination von MPI und Java werden zwei Wege beschritten:

Der erste Weg hätte den Vorteil, dass viele Java-Techniken wie RMI, JMS und Jini für MPI nutzbar wären [BC99]; es gab aber bis 2007 keine (die MPI und Java Gemeinde) zufrieden stellende Implementierung.

Der zweite Weg hat den Vorteil, dass man auf eine ausgereifte und angepasste MPI-Implementierung zurückgreifen kann, aber aus Sicht von Java hat man immer mit einer zweistufigen Implementierung zu kämpfen.

Bis 2005 wurde das frei verfügbare auf TCP/IP basierende MPICH [ACG$^+$00] und als Java-Anbindung javaMPI [KLL$^+$99] eingesetzt. (Neben MPI 1.2 wurde die Verwendung von Java-Objekt-Serialisierung für die Kommunikation unterstützt.)

Seit 2007 wird javaMPI nicht mehr weiter entwickelt und es gibt jetzt eine reine Java Implementierung von MPI in Java MPJ Express.


Heinz Kredel