Rogelio Sandoz

Páginas: 6 (1475 palabras) Publicado: 8 de julio de 2011
Integrating MPJ Express and mpiJava

Kamran Hameed
camran.hameed@gmail.com
February 6, 2009

1. Introduction

There have been various efforts to develop Java based messaging systems in the past. These systems typically follow one of the three approaches: use a JNI interface to a native MPI implementation; implement Java messaging on top of Remote Method Invocation; or implement thesystem using lower level sockets.

mpiJava is a Java messaging system that uses JNI to communicate with the native MPI library. It has been a very popular Java based messaging system in terms of uptake by the HPC community. It has been used as a teaching tool as well as for parallel simulations. One drawback of following JNI approach is that, mpiJava does not comply with Java philosophy of"write once, run anywhere". The current mpiJava software API is in version 1.2.5 which was released in January 2003.

MPJ Express is a pure Java based messaging system that implements the high-level MPI functionality using lower level sockets. An intermediate buffering layer has been implemented to avoid the Java Native Interface (JNI) overheads, suffered by some existing Java messaging systemsincluding mpiJava. MPJ Express has a layered design that allows incremental development, and provides the capability to update and swap layers in or out as needed. This helps mitigate the contradictory requirements of end users because they can opt to use high-performance proprietary network devices or choose the pure Java devices that use sockets.

In this project, we are developing the native MPIdevice driver for MPJ Express. Native MPI device will extensively reuse the code base developed for the mpiJava software. Our initial study suggests that the MPJ Express software would be partly redesigned to allow smooth integration of the mpiJava software. The purpose of this document is to identify and sketch out these design modifications.

2. Issues in the Current ArchitectureFigure 1 shows the current MPJ Express architecture.

[pic]

Figure 3.1: The MPJ Express Architecture

The top level MPI provides all higher-level MPI functionality, which includes point-to-point communications, collective communications, virtual topologies, and derived datatypes. The MPJ Device level (called mpjdev) is the first device layer, which allows swapping various communication drivers.Currently there’s one available implementation of the mpjdev layer, which calls the initialize method of the xdev device layer. The xdev device layer—depending on user’s input—decides which of the two drivers is used for actual communication. The two available options are Java NIO Device and the MX device.

The source code package hierarchy is as follows:[pic]

Figure 3.2: Current source hierarchy of MPJ Express

Before going onto the main design issues in current MPJ Express architecture, we explain the execution flow of programs in the current architecture of MPJ Express.

The function MPI.Init() is located in the file mpi/MPI.java. When this function is invoked, it performs some logging, initializes the object of Intracomm.javaCOMM_WORLD. The MPI.Init() then calls MPJDev.init(). The class MPJDev is located in the package src/mpjdev/MPJDev.init (). When the MPJDev.init () is called, it checks which device is being used. It then initializes the appropriate device and also initializes the object of Comm class through one of its constructors.

The Send() function is invoked using the object of Intracomm class(src/mpi/Intracomm.java) as COMM_WORLD.Send(). Now the job of COMM_WORLD.Send () is to pass this one to the send () of src/mpjdev/Comm.java

In order for the Send () of src/mpi/Comm.java to convert to the appropriate parameters of /src/mpjdev/Comm.java, the following steps are performed in the Send () function of src/mpi/Comm.java

mpjbuf.Buffer mpjbuf = (mpjbuf.Buffer) buf;
mpjbuf.commit();...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Rogelio Sinán
  • Rogelio
  • rogelio
  • Rogelio
  • Rogelio
  • Rogelio
  • Salmona Rogelio
  • rogelio salmona

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS