340 likes | 469 Views
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
E N D
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 Simulated Annealing
Applications on PC clusters and GRID Application tasks GRID Clusters
Genetic Algorithms 生物の遺伝と進化を模擬した最適化手法 多点探索 交叉による探索 突然変異による探索 選択による探索領域の絞りこみ
Individual Information name Gene 1001110011 Fitness Value Flags Object Transport
Sample Class Class Individual char[] name Int[] gene float fitness value Int[] flags
Primitive Types Only Sender Receiver send(name) send(gene) send(fitness) send(flag) recv(name) recv(gene) recv(fitness) recv(flag)
Object Types Sender Receiver Send (individual) Recv (individual)
Bottleneck Message passing
MPI Message Passing Interface Standard API Set • For Fortran / C / C++ Defined • For Java Almost Defined
Java-MPI mpijava • Object Transport • Interface To Native MPI MPIJ • Full Java Implementation • Shared Memory Support
Objective Deriving Java Merits Java-MPI
Features 1. Object Transport 2. Full Java Implementation 3. Self Start-up 4. Shared Memory Support
Target 1 Cluster
Target 2 Multi Processor Machine
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)
int • long • float • double • byte • char • short • boolean Java Datatypes Primitive Types Object Types Other All
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)
MPICH > mpirun-np nexefile JDK Style > java class This MPI > java -Dnp=nclass How To Launch
Launching Command Spawning Tasks
MPI.init Java-MPI Binding Void init(String[] args) Our Implementation Void init(String name_of_class, String[] args)
Experiment Environment Switching HUB 100BASE-TX Pentium 3 500MHz 2 Way SMP Linux 2.2.12 Blackdown JDK1.2.2 RC3
Band Width byte[ ] 100M 10M 1M 100K 10K 1K Band Width (Bytes/Sec) 10 100 1K 10K 100K 1M Message Size (Byte)
Band Width (Intra Node) byte[ ] 100M 10M 1M 100K 10K Band Width (Bytes/Sec) 10 100 1K 10K 100K 1M Message Size (Byte)
Conclusion (1/2) Deriving Java Merits 1. Object Transport 2. Full Java Implementation 3. Self Start-up 4. Shared Memory Support Natural Expression Portability JDK Style Start-up Fast Communication
Conclusion (2/2) 5. Inter Node Communication Slower Than MPICH 6. Intra Node Communication Faster Than MPICH
Future Works より高率的な実装 1K付近でのBandwidthの落ち込みの特定 Marshallingによる通信遅延の検討 最適化アプリケーションなどでの実際の使用 その他