MPJ Express: An Implementation of MPI in Java
Download
Report
Transcript MPJ Express: An Implementation of MPI in Java
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]
7/16/2015
1
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
7/16/2015
2
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.
7/16/2015
3
Multicore Configuration
The users can use multicore device driver (also known as shared
memory device driver) in the multicore configuration
CPU 0
Proc 0
Proc 3
CPU 3
Main Memory
CPU 1
Proc 1
CPU 2
Proc 2
Fig1: MPJ Express executing in the multicore configuration with four threads on a
quad core processor
7/16/2015
4
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
7/16/2015
5
Cluster Configuration
Cluster Configuration
2
– Application developers can opt to use
either of the two communication drivers
1
3
in the cluster configuration
– Java NIO Device Driver (niodev) It can be
4
used to execute MPJ Express programs
0
on Ethernet-based interconnects.
5
– Myrinet Device Driver (mxdev): Many
clusters today are equipped with high
performance low latency networks like
7
Myrinet.
– Lets consider a cluster comprising of 8
6
compute nodes.
Fig2: MPJ Express executing in the cluster
– Every process is started on different
configuration with 8 processes on a
node while running code with Cluster cluster with 8 compute nodes
Configuration, depending upon the
machines file
7/16/2015
6
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
7/16/2015
7
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
7/16/2015
8
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"
7/16/2015
9
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
7/16/2015
10
Writing Programs with MPJ Express
A sample Program with MPJ Express is
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();
}
}
Save this Program as HelloWorld.java
7/16/2015
11
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.
Running with Cluster Configuration
– Start the daemons
– UNIX/Linux/Mac: mpjrun.sh –np
of processors> HelloWorld.java
<no. of processors> -dev niodev
HelloWorld
– Windows: mpjrun.bat
–np <no. of processors> -dev niodev
HelloWorld
7/16/2015
12
Executing Programs with MPJ Express on UNIX/Linux/Mac
Multicore Configuration
Cluster Configuration
7/16/2015
13
Executing Programs with MPJ Express on Windows
Multicore Configuration
Cluster Configuration
7/16/2015
14
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.
7/16/2015
15
Manuals and Help Resources
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
Visit MPJ Express (http://mpj-express.org) for more details.
7/16/2015
16
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])
7/16/2015
17
Contributors
Aamir Shafi
Jawad Manzoor
Kamran Hamid
Mohsan Jameel
Bryan Carpenter
Mark Baker
Hong Ong
Guillermo Taboada
Sabela Ramos
7/16/2015
18
Acknowledgements
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
7/16/2015
19