Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro...
-
date post
22-Dec-2015 -
Category
Documents
-
view
226 -
download
1
Transcript of Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro...
![Page 1: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/1.jpg)
Message Passing Interface
In Java for AgentTeamwork
(MPJ)By Zhiji Huang
Advisor:
Professor Munehiro Fukuda
2005
![Page 2: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/2.jpg)
AgentTeamwork
User requests AgentTeamwork for some computing nodes.
AgentTeamworking manages the resources for performance and fault tolerance automatically.
AgentTeamwork
![Page 3: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/3.jpg)
AgentTeamwork Layers
User applications in Java
mpiJava API
User Program Wrapper
mpiJavaSocket mpiJavaAteam
Java Socket GridTcp
AgentTeamwork
Java Virtual Machine
Operating Systems
Hardware
![Page 4: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/4.jpg)
AgentTeamwork
![Page 5: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/5.jpg)
GridTCP
Extends TCP by adding message saving and check-pointing features.
Automatically saves messages. Provides check-pointing, or snapshots
of program execution. Ultimately allows programs to recover
from errors. Node crashes, etc.
![Page 6: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/6.jpg)
GridTcp
public class MyApplication { public GridIpEntry ipEntry[]; // used by the GridTcp socket library public int funcId; // used by the user program wrapper public GridTcp tcp; // the GridTcp error-recoverable socket public int nprocess; // #processors public int myRank; // processor id ( or mpi rank) public int func_0( String args[] ) { // constructor MPJ.Init( args, ipEntry, tcp ); // invoke mpiJava-A .....; // more statements to be inserted return 1; // calls func_1( ) } public int func_1( ) { // called from func_0 if ( MPJ.COMM_WORLD.Rank( ) == 0 ) MPJ.COMM_WORLD.Send( ... ); else MPJ.COMM_WORLD.Recv( ... ); .....; // more statements to be inserted return 2; // calls func_2( ) } public int func_2( ) { // called from func_2, the last function .....; // more statements to be inserted MPJ.finalize( ); // stops mpiJava-A return -2; // application terminated }}
![Page 7: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/7.jpg)
Message Passing Interface
API that facilitates communications (or message passing) for distributed programs.
Usually exists for FORTRAN, C/C++, Java. Current implementations in Java are actually Java wrappers around
native C code. Disadvantages with portability and is not suitable to concept of
AgentTeamwork.
P0 P1
P2 P3
User Program. SPMD
MPI
![Page 8: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/8.jpg)
Message Passing Interface – Basic Functions
Init()
Send()/Recv()
Bcast()
Gather()
![Page 9: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/9.jpg)
MPJ – mpiJavaS & mpiJavaA
MPJ
Datatypes
Communicator
JavaComm
GridComm
MPJMessage
Op
etc
![Page 10: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/10.jpg)
MPJ
Contains main MPI operations. Call to traditional Init(string[]) initializes
Java socket-based connections. Call to Init(string[], IpTable, GridTcp)
initializes connections with GridTCP Also provides Rank(), Size(),
Finalize(), etc.
![Page 11: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/11.jpg)
Communicator
Provides all communications functions. Point to point
Blocking – Send(), IRecv() NonBlocking – Isend(), Recv()
Collective – Gather(), Scatter(), Reduce(), and variants.
![Page 12: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/12.jpg)
JavaComm & GridComm
JavaComm: Java Sockets, SocketServers
GridComm: GridTcp Sockets, GridTcp object, IpTable And others needed by GridTCP.
Both: InputStreamForRank[] OutputStreamForRank[] Allows for socket communications using bytes. Can use same communications algorithms for both
GridComm and JavaComm. Clean interface between the two layers.
![Page 13: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/13.jpg)
Implementation Notes - Performance
Creation of Java byte arrays/buffers very expensive. Greatly reduces performance.
One solution: use permanent buffers for serialization byte buffer[64k] Serialize into buffer until full, write buffer,
serialize remaining data. Not effective with collective communication
algorithms. Either requires extra byte storage to handle/save serialized data. Or requires serialization/deserialization at every read/write.
![Page 14: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/14.jpg)
Raw Bandwidth – no serialization (just bytes).
Java Socket
GridTCP
mpiJava-A
mpiJava
![Page 15: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/15.jpg)
Serialization – Doubles and other primitives
Doubles - only 20% of performance. Other primitives see 25-80% performance. Necessity to “serialize” or turn items into bytes very costly In C/C++
Cast into byte pointer – 1 instruction. In Java
int x; //for just 1 integerbyte[] arr[4]; //extra memory costarr[3] = (byte) ( x ); arr[2] = (byte) ( x >>> 8); //shift, cast, copyarr[1] = (byte) (x >>> 16); //repeatarr[0] = (byte) (x >>> 24);
Lots of instructions, extra memory for byte buffer. Cost x2 due to deserialization on other side.
![Page 16: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/16.jpg)
PingPong (send and recv) – Doubles
PingPong of Doubles
0
5
10
15
20
25
30
35
40
Number of Doubles
MB
yte
s/s
mpiJavaS (mpj)
mpiJava
![Page 17: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/17.jpg)
PingPong - ObjectsPingPong Objects
0
20000
40000
60000
80000
100000
120000
140000
160000
Number of Objects
Ob
ject
s/s
mpiJavaS (mpj)
mpiJava
![Page 18: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/18.jpg)
Bcast – 8 processes DoublesBcast (np = 8) Doubles
0
5
10
15
20
25
30
35
Number of Doubles
MB
/s mpiJavaS (mpj)
mpiJava
![Page 19: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/19.jpg)
Bcast – 8 processes Objects
Bcast (np = 8) Objects
0
20000
40000
60000
80000
100000
120000
Number of Objects
Ob
ject
s/s
mpiJavaS (mpj)
mpiJava
![Page 20: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/20.jpg)
Performance Analysis
Raw bandwidth mpiJavaS comes to about 95-100% of maximum
Java performance. mpiJavaA (with checkpointing and error recovery)
incurs 20-60% overhead, but still overtakes mpiJava with bigger data segments.
Doubles & Objects When dealing with primitives or objects that need
serialization, a 25-50% overhead is incurred. Memory issues related to mpiJavaA – runs out
of memory.
![Page 21: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/21.jpg)
Conclusion
The next step is to develop a tool to automatically parses a user program into GridTcp functions for best performance.
Ultimately, automate user job distribution, management, and error recovery.
![Page 22: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/22.jpg)
A few helpful classes…
CSS432 Networking CSS430 Operating Systems CSS360 Software Engineering CSS422 Hardware CSS343 Data Structures & Algorithms
![Page 23: Message Passing Interface In Java for AgentTeamwork (MPJ) By Zhiji Huang Advisor: Professor Munehiro Fukuda 2005.](https://reader036.fdocuments.in/reader036/viewer/2022062421/56649d795503460f94a5d451/html5/thumbnails/23.jpg)
MPJ – mpiJavaS & mpiJavaA
Questions?