java による mpi の実装と評価
DESCRIPTION
Java による MPI の実装と評価. 日下部 明(日本オラクル) 廣安 知之(同志社大 工) 三木 光範(同志社大 工). Java. Easy To Develop Platform Independent. Simple Language. No. Correct Source Code Re-compile. Our Projects. Applications. Parallel Computers. Optimization tools. Gradient methods Genetic Algorithms - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/1.jpg)
Java によるMPI の実装と評価
日下部 明(日本オラクル)廣安 知之(同志社大 工)三木 光範(同志社大 工)
![Page 2: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/2.jpg)
Java
•Easy To Develop
•Platform IndependentCorrect Source Code
Re-compileNo
Simple Language
![Page 3: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/3.jpg)
Our Projects
Applications
Optimization tools
Gradient methodsGenetic AlgorithmsSimulated Annealing
Parallel Computers
![Page 4: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/4.jpg)
Applications on PC clusters and GRID
Applicationtasks
Clusters GRID
![Page 5: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/5.jpg)
Genetic Algorithms
生物の遺伝と進化を模擬した最適化手法
交叉による探索
突然変異による探索
選択による探索領域の絞りこみ
多点探索
![Page 6: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/6.jpg)
Parallel Genetic Algorithms
![Page 7: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/7.jpg)
Individual Information
Gene1001110011
Fitness Value
Flags Object Transport
name
![Page 8: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/8.jpg)
Sample Class
Class Individual
char[] nameInt[] genefloat fitness valueInt[] flags
![Page 9: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/9.jpg)
Primitive Types Only
Sender Receiver
send(name)
send(gene)
send(fitness)
send(flag)
recv(name)
recv(gene)
recv(fitness)
recv(flag)
![Page 10: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/10.jpg)
Object Types
Sender Receiver
Send
(individual)
Recv
(individual)
![Page 11: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/11.jpg)
Bottleneck
Message passing
![Page 12: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/12.jpg)
MPI
•For Fortran / C / C++
•For Java
Defined
Almost Defined
Message Passing InterfaceStandard API Set
![Page 13: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/13.jpg)
Java-MPImpijava
•Object Transport
•Interface To Native MPI
MPIJ•Full Java Implementation
•Shared Memory Support
![Page 14: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/14.jpg)
Objective
Deriving Java Merits
Java-MPI
![Page 15: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/15.jpg)
Features
1. Object Transport
2. Full Java Implementation
3. Self Start-up
4. Shared Memory Support
![Page 16: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/16.jpg)
Target 1Cluster
![Page 17: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/17.jpg)
Target 2Multi Processor Machine
![Page 18: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/18.jpg)
send/recv
void send (Object buf, int offset, int count, Datatype datatype, int dest, int tag)
void recv (Object buf, int offset, int count, Datatype datatype, int dest, int tag)
![Page 19: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/19.jpg)
Java Datatypes
•byte
•char
•short
•boolean
•int
•long
•float
•double
Primitive Types Object Types
Other All
![Page 20: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/20.jpg)
Marsharing
System.arraycopy
countoffset
writeObject
ObjectOutputStream
Message Buffer
MessageObject
System. arraycopy
countoffset
readObject
ObjectInputStream
Message Buffer
MessageObject
![Page 21: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/21.jpg)
Extended Comm
void send (Object buf, int offset, int count, Datatype datatype, int dest, int tag)
void recv (Object buf, int offset, int count, Datatype datatype, int dest, int tag)
void sendObject (Object buf, int dest, int tag)
Object recvObject (int src, int tag, Status status)
![Page 22: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/22.jpg)
Extended Method
pass reference
writeObject
ObjectOutputStream
Message Buffer
MessageObject
readObject
ObjectInputStream
pass reference
Message Buffer
MessageObject
![Page 23: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/23.jpg)
How To Launch
JDK Style> java class
This MPI> java -Dnp=n class
MPICH> mpirun -np n exefile
![Page 24: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/24.jpg)
Spawning Tasks
Launching
Command
![Page 25: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/25.jpg)
MPI.init
Java-MPI Binding
Our Implementation
Void init(String[] args)
Void init(String name_of_class, String[] args)
![Page 26: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/26.jpg)
SMP Cluster
![Page 27: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/27.jpg)
Experiment Environment
Pentium 3500MHz2 Way SMPLinux 2.2.12Blackdown JDK1.2.2 RC3
Switching HUB
100BASE-TX
![Page 28: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/28.jpg)
Band Width
byteint
double
1.0e8
1.0e7
1.0e6
1.0e5
1.0e4
1.0e31.0e61.0e51.0e41.0e31.0e21.0e1
Band Width (Bytes/sec)
Message Size (Bytes)
![Page 29: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/29.jpg)
Band Width
byte1.0e8
1.0e7
1.0e6
1.0e5
1.0e4
1.0e31.0e61.0e51.0e41.0e31.0e21.0e1
Message Siz e (Bytes)
byte with extended method
![Page 30: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/30.jpg)
1000
10000
100000
1000000
10000000
100000000
9 17 31 56 99 177 316 562 999 177831625623999917782316225623499999177827316227562341999999
MPICH
J ava-MPI
Band Width
10 100 1K 10K 100K 1M
100M
10M
1M
100K
10K
1K
byte[ ]
Message Size (Byte)
Band
Wid
th (
Byte
s/S
ec)
![Page 31: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/31.jpg)
10000
100000
1000000
10000000
100000000
9 17 31 56 99 177316 562 999177831625623999917782316225623499999177827316227562341999999
MPICH
Shared Memory
Socket
Band Width (Intra Node)
10 100 1K 10K 100K 1M
100M
10M
1M
100K
10K
byte[ ]
Message Size (Byte)
Band
Wid
th (
Byte
s/S
ec)
![Page 32: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/32.jpg)
Conclusion (1/2)
Deriving Java Merits1. Object Transport
2. Full Java Implementation
3. Self Start-up
4. Shared Memory Support
Natural Expression
Portability
JDK Style Start-up
Fast Communication
![Page 33: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/33.jpg)
Conclusion (2/2)
5. Inter Node Communication
6. Intra Node Communication
Slower Than MPICH
Faster Than MPICH
![Page 34: Java による MPI の実装と評価](https://reader033.vdocuments.net/reader033/viewer/2022061517/568149ae550346895db6ed58/html5/thumbnails/34.jpg)
Future Works
より高率的な実装1 K 付近での Bandwidth の落ち込みの特定Marshalling による通信遅延の検討最適化アプリケーションなどでの実際の使用その他