You are on page 1of 12

ASSIGNMENT-I

DISTRIBUTED SYST EM
T H A N G AVE L . S

MPI
Message Passing Interface (MPI) is a standardized and portable message-passing system designed
by a group of researchers from academia and industry to function on a wide variety of parallel
computing architectures.
The standard defines the syntax and semantics of a core of library routines useful to a wide range of
users writing portable message-passing programs in C, C++, and Fortran.
There are several well-tested and efficient implementations of MPI, many of which are open-source or
in the public domain. These fostered the development of a parallel software industry, and encouraged
development of portable and scalable large-scale parallel applications.

MPI for Java: Early History


When

Java first appeared there was immediate


interest in its possible uses for parallel computing, and
there was a little explosion of MPI and PVM
bindings for Java, e.g.:
JavaMPI
University of Westminster

mpiJava
Syracuse University/Florida State University/Indiana University

DOGMA MPIJ
Brigham Young University

JMPI
MPI Software Technology

JavaPVM (jPVM)
Georgia Tech.

JPVM
University of Virginia

av a J

ht iw gni s s a P

e g a s s eM

JAVA MPI :
java MPI is a software package that provides
Java wrappers to a native MPI, through the Java
Native Interface.

It also comes with a test suite and several


demo applications.
Implements a Java API for MPI suggested in late
97 by Carpenteretal.
Builds on work on Java wrappers for MPI
started at Syracuse about a year earlier by Yuh-Jye
Chang.

Java RMI:
It is restrictive and overhead is
high.
(un)marshaling of data is costly
than socket

Contributors:

Bryan Carpenter, Yuh-Jye Chang,


Xinying Li, Sung Hoon Ko,

Guansong Zhang, Mark Baker,


First official release in1998.Implementation Sang Boem Lim.
still evolving. Conceptually simple, but it took
several years to iron out the problems.

Overview

MPI is a communication protocol for


programming parallel computers.
Both point-to-point and collective communication
are supported.
MPI is a message-passing application
programmer interface, together with protocol and
semantic specifications for how its features must
behave in any implementation.
MPI's goals are high performance, scalability, and
portability. MPI remains the dominant model used
in high-performance computing today.

mpiJava features
Fully featured Java interface to MPI 1.1
Object-oriented API based on MPI 2 standard C++ interface
Initial implementation through JNI to native MPI
Comprehensive test suite translated from IBM MPI suite
Available for Solaris, Windows NT and other platforms
Commercial message-passing environment for Java
announced by MPI Software Technology.
Crawford, Dandass and Skjellum, 1997

mpiJava - Software Layers


MPIprog.java
Import mpi.*;
JNI C Interface
Native Library (MPI)

Installing mpiJava
The current release (1.2.5) has been tested on Linux, Solaris and
AIX (SPseriesmachines).
Windows is also possible, but currently not well supported.
First you must have a native MPI installed. In general this can be
MPICH,
LAM, SunHPC or IBM MPI (SPX).
Other platforms are possible but will need work to port.

Download the mpiJava sources fromhttp://www.hpjava.org/mpiJava.html

Extract the archive, then go through the conventional GNU-like


installation process.

./configure, make,

Put the mpiJava/src/scripts/ directory on your


mpiJava/lib/classes/ directory on your CLASSPATH.

PATH,

and

put

Running mpiJava Programs


The mpiJava release bundle includes a test suite translated from IBM
MPI
test suite. The first thing you should probably try is running this by:
$ make check

Assuming this completes successfully (you can live with a few warning
messages)try running some examples in the
mpiJava/examples/directory.
e.g, Go into mpiJava/examples/simple and try:
$ javac Hello.java
$ prunjava 2 Hello

The script prunjava is a convenience script mostly designed for test


purposes.

It takes just two arguments: the number of processes to run in, and the class

MPI Exception

Nearly all methods of mpiJava are declared to throw the


MPIException.
This is supposed to report the error status of a failed
method ,closely following the failure modes documented in
the MPI standard.

Actually this mechanism has never been implemented in mpiJava, and


instead failed MPI methods normally abort the whole program.
Also be warned that the current mpiJava wrappers lack most of the
safety checks you might expect in the Java librarieserroneous
programs may cause the JVM to crash with very un-Java-like error
messages.

Some issues in design of a Java API for MPI


Class hierarchy. MPI is already object-based. Standard class hierarchy exists for C++.
Detailed argument lists for methods. Properties of Java language imply various superficial
changes from C/C++.
Mechanisms for representing message buffers.

You might also like