Date post: | 31-Dec-2015 |
Category: |
Documents |
Upload: | nakeisha-johnson |
View: | 49 times |
Download: | 0 times |
MPJ Express: An Implementation of MPI in JavaVersion: 0.35 (Beta Release)
Aamir Shafi, Bryan Carpenter, Mark [email protected], [email protected],
104/19/23
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
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
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
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
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
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
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
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
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
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(); }}
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
Executing Programs with MPJ Express on UNIX/Linux/Mac
Multicore Configuration
Cluster Configuration
04/19/23 13
Executing Programs with MPJ Express on Windows
Multicore Configuration
Cluster Configuration
04/19/23 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.
1504/19/23
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
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
Contributors
1804/19/23
Aamir ShafiJawad ManzoorKamran HamidMohsan Jameel
Bryan Carpenter
Mark Baker
Guillermo TaboadaSabela Ramos
Hong Ong
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