+ All Categories
Home > Documents > MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Date post: 31-Dec-2015
Category:
Upload: nakeisha-johnson
View: 49 times
Download: 0 times
Share this document with a friend
Description:
MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release). Aamir Shafi , Bryan Carpenter, Mark Baker [email protected], [email protected], [email protected]. Introduction. - PowerPoint PPT Presentation
19
MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release) Aamir Shafi, Bryan Carpenter, Mark Baker [email protected], [email protected], [email protected] 1 06/11/22
Transcript
Page 1: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express: An Implementation of MPI in JavaVersion: 0.35 (Beta Release)

Aamir Shafi, Bryan Carpenter, Mark [email protected], [email protected],

[email protected]

104/19/23

Page 2: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Introduction

MPJ Express is a message passing library that be can be used by the application developers to develop and execute parallel Java applications on compute clusters or network of computers.

MPJ Express is originally designed for distributed memory machines like clusters but also supports efficient execution of parallel applications on desktops or laptops that contain shared memory or multicore processors

MPJ Express is a reference implementation of mpiJava 1.2 API, which is an MPI-like API for Java defined by the Java Grande Forum

The current release contains:– The core library– The runtime infrastructure– The test-suite

04/19/23 2

Page 3: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express Configurations

MPJ Express can be configured in two ways:– Multicore Configuration: This configuration is used by

developers who want to execute their parallel Java applications on multicore or shared memory machines (laptops and desktops).

– Cluster Configuration: This configuration is used by developers who want to execute their parallel Java applications on distributed memory platforms including clusters and network of computers.

04/19/23 3

Page 4: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Multicore Configuration

The users can use multicore device driver (also known as shared memory device driver) in the multicore configuration

04/19/23 4

Fig1: MPJ Express executing in the multicore configuration with four threads on a quad core processor

Main Memory

CPU 0

CPU 1

CPU 2

CPU 3

Proc 0Proc 0

Proc 1Proc 1

Proc 2Proc 2

Proc 3Proc 3

Page 5: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Advantages of Multicore Configuration

Incremental Development: – Users can first develop parallel applications on

desktops/laptops using multicore configuration and then take the same code to distributed memory platforms including clusters

Teaching Purposes: – This configuration is preferred for teaching purposes since

students can execute message passing code on their personal computers

Debugging and Profiling: – IDEs like Eclipse can be used for easier debugging and profiling

04/19/23 5

Page 6: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Cluster Configuration

Cluster Configuration– Application developers can opt to use

either of the two communication drivers in the cluster configuration

– Java NIO Device Driver (niodev) It can be used to execute MPJ Express programs on Ethernet-based interconnects.

– Myrinet Device Driver (mxdev): Many clusters today are equipped with high performance low latency networks like Myrinet.

– Lets consider a cluster comprising of 8 compute nodes.

– Every process is started on different node while running code with Cluster Configuration, depending upon the machines file

604/19/23

0

1

2

3

4

5

6

7

Fig2: MPJ Express executing in the cluster configuration with 8 processes on a cluster with 8 compute nodes

Page 7: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express Installation (UNIX/Linux/Mac)

Pre-requisites– Java 1.5 (stable) or higher– Apache ant 1.6.2 or higher (Optional)– Perl (Optional)

Running MPJ Express Programs in the Multicore Configuration– Download MPJ Express and unpack it.– Set MPJ_HOME and PATH environmental variables:

• export MPJ_HOME=/path/to/mpj/• export PATH=$PATH:$MPJ_HOME/bin

(These above two lines can be added to ~/.bashrc)– Write your MPJ Express program (HelloWorld.java) and save it. – Compile: javac -cp.:$MPJ_HOME/lib/mpj.jar

HelloWorld.java– Execute: mpjrun.sh -np 4 HelloWorld.java

04/19/23 7

Page 8: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express Installation (UNIX/Linux/Mac) Cont’d

Running MPJ Express Programs in the Cluster Configuration– Download MPJ Express and unpack it.– Set MPJ_HOME and PATH environmental variables:

• export MPJ_HOME=/path/to/mpj/• export PATH=$PATH:$MPJ_HOME/bin

(These above two lines can be added to ~/.bashrc)– Write a machines file (name it “machines”) stating hostnames or IP

addresses of all the machines involved in the parallel execution– Write your MPJ Express program (HelloWorld.java) and save it. – Start Daemons: mpjboot machines– Compile: javac -cp.:$MPJ_HOME/lib/mpj.jar HelloWorld.java– Execute: mpjrun.sh -np 4 HelloWorld.java– Stop daemons: mpjhalt machines

04/19/23 8

Page 9: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express Installation (Windows)

Pre-requisites– Java 1.5 (stable) or higher– Apache ant 1.6.2 or higher (Optional)– Perl (Optional)

Running MPJ Express Programs in the Multicore Configuration– 1. Download MPJ Express and unpack it.– 2. Set MPJ_HOME and PATH environmental variables. Right-click My

Computer->Properties->Advanced tab->Environment Variables and export the following system variables (User variables are not enough)

• Set the value of MPJ_HOME = c:\mpj (assuming mpj is in c:\• Append the c:\mpj\bin directory to the PATH variable

– Cygwin on Windows: (assuming mpj is 'c:\mpj‘): The recommended way to is to set variables as in Windows. If you want to set variables in cygwin shell• export MPJ_HOME="c:\\mpj“• export PATH=$PATH:"$MPJ_HOME\\bin"

04/19/23 9

Page 10: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

MPJ Express Installation (Windows) Cont’d

– Write your MPJ Express program (HelloWorld.java) and save it. – Compile: javac -cp.:$MPJ_HOME/lib/mpj.jar HelloWorld.java– Execute: mpjrun.bat -np 4 HelloWorld.java

For running MPJ Express programs in the cluster configuration, refer to the $MPJ_HOME/README-win.txt and $MPJ_HOME/doc/windowsguide.pdf

04/19/23 10

Page 11: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Writing Programs with MPJ Express

A sample Program with MPJ Express is

 

Save this Program as HelloWorld.java

1104/19/23

import mpi.*;

public class HelloWorld { public static void main(String args[]) throws Exception { MPI.Init(args); int me = MPI.COMM_WORLD.Rank(); int size = MPI.COMM_WORLD.Size(); System.out.println("Hi from <"+me+">"); MPI.Finalize(); }}

Page 12: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Executing MPJ Express Programs

Compiling– UNIX/Linux/Mac: javac –cp .:$MPJ_HOME/lib/mpj.jar

HelloWorld.java

– Windows: javac –cp .:%MPJ_HOME%/lib/mpj.jar HelloWorld.java Running with Multicore Configuration

– UNIX/Linux/Mac: mpjrun.sh –np <no. of processors> HelloWorld.java

– Windows: mpjrun.bat –np <no. of processors> HelloWorld.java Running with Cluster Configuration

– Start the daemons– UNIX/Linux/Mac: mpjrun.sh –np <no. of processors> -dev niodev

HelloWorld

– Windows: mpjrun.bat –np <no. of processors> -dev niodev HelloWorld

1204/19/23

Page 13: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Executing Programs with MPJ Express on UNIX/Linux/Mac

Multicore Configuration

Cluster Configuration

04/19/23 13

Page 14: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Executing Programs with MPJ Express on Windows

Multicore Configuration

Cluster Configuration

04/19/23 14

Page 15: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Additional Runtime Arguments

The mpjrun.[sh/bat] script accepts some additional arguments which can be passed according to the user preferences. Some of them are– np switch: If a value is specified, then MPJ Express starts those many

processes for the user application. It can be specified like mpjrun.[sh/bat] –np 2 ProgramName.

– dev switch: This switch can be given at runtime to change to the appropriate device driver. It can be used as mpjrun.[sh/bat] –dev multicore/niodev/mxdev ProgramName.

– machinesfile switch: While running programs, MPJ Express runtime expects a file with name “machines” in the current directory. User can also specify a machines file with different name using machinesfile switch as mpjrun.[sh/bat] machinesfile myFile ProgramName

– wdir switch: If your programs reads some file, then it may be a good idea to separate this file from your application classes, or copy it to a tmp directory and specify this tmp directory as working directory using -wdir switch.

1504/19/23

Page 16: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Manuals and Help Resources

Visit MPJ Express (http://mpj-express.org) for more details.

1604/19/23

Windows Linux

README (Quick Start Guide)

$MPJ_HOME/README-win.txt $MPJ_HOME/README

User Guide $MPJ_HOME/doc/windowsguide.pdf $MPJ_HOME/doc/linuxguide.pdf

Page 17: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Contact and Support

MPJ Express Users Mailing List (http://www.lists.rdg.ac.uk/mailman/listinfo/mpj-user)

Alternatively, the users can contact us directly by email.– Aamir Shafi ([email protected])– Bryan Carpenter ([email protected])– Mark Baker ([email protected])

1704/19/23

Page 18: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

Contributors

1804/19/23

Aamir ShafiJawad ManzoorKamran HamidMohsan Jameel

Bryan Carpenter

Mark Baker

Guillermo TaboadaSabela Ramos

Hong Ong

Page 19: MPJ Express: An Implementation of MPI in Java Version: 0.35 (Beta Release)

The project partners received a generous grant from the British Council under the PMI2 Connect program (http://www.britishcouncil.org/learning-pmi2-connect.htm)

Project Title: CollAborative Multicore Programming Using Scientific Java Messaging Project Start Date: September 2008 Duration: 2 Years

Acknowledgements

1904/19/23


Recommended