1 / 10

JavaMPI and mpiJava: A Comprehensive Java API for High-Performance Computing with MPI

This document reviews mpiJava, a Java API for MPI that provides a robust interface consistent with MPI 1.1 and based on the MPI 2 C++ standard. Developed in late 1997, it features good performance for large data transfers and includes a comprehensive test suite adapted from IBM's MPI suite. The implementation through JNI allows tight integration with native MPI libraries. The API supports object-oriented programming paradigms to facilitate the development of high-performance distributed applications in Java.

yamal
Télécharger la présentation

JavaMPI and mpiJava: A Comprehensive Java API for High-Performance Computing with MPI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. mpiJava Mark.Baker@Computer.Org

  2. Related projects • mpiJava (Syracuse) • JavaMPI (Getov et al, Westminster) • JMPI (MPI Software Technology) • MPIJ (Judd et al, Brigham Young) • jmpi (Dincer et al)

  3. The mpiJava wrapper • Implements a Java API for MPI suggested in late ‘97. • Good Performance on large data transfers • Tied to native mpi C implementation

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

  5. MPIprog.java Import mpi.*; JNI C Interface Native Library (MPI) mpiJava - Software Layers

  6. Class hierarchy

  7. Minimal mpiJava program import mpi.* class Hello { static public void main(String[] args) { MPI.Init(args) ; int myrank = MPI.COMM_WORLD.Rank() ; if(myrank == 0) { char[] message = “Hello, there”.toCharArray() ; MPI.COMM_WORLD.Send(message, 0, message.length, MPI.CHAR, 1, 99) ; } else { char[] message = new char [20] ; MPI.COMM_WORLD.Recv(message, 0, 20, MPI.CHAR, 0, 99) ; System.out.println(“received:” + new String(message) + “:”) ; } MPI.Finalize() ; } }

  8. mpiJava performance

  9. MPI datatypes • Send and receive members of Comm: void send(Object buf, int offset, int count, Datatype type, int dst, int tag) ; Status recv(Object buf, int offset, int count, Datatype type, int src, int tag) ; • buf must be an array. offset is the element where message starts. Datatype class describes type of elements.

  10. Basic Datatypes

More Related