34
Java ににに MPI にににににに ににに に ににににににに () にに にに にににに に にに にに にににに に

Java による MPI の実装と評価

  • Upload
    carver

  • View
    66

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

Page 1: Java による MPI の実装と評価

Java によるMPI の実装と評価

日下部 明(日本オラクル)廣安 知之(同志社大 工)三木 光範(同志社大 工)

Page 2: Java による MPI の実装と評価

Java

•Easy To Develop

•Platform IndependentCorrect Source Code

Re-compileNo

Simple Language

Page 3: Java による MPI の実装と評価

Our Projects

Applications

Optimization tools

Gradient methodsGenetic AlgorithmsSimulated Annealing

Parallel Computers

Page 4: Java による MPI の実装と評価

Applications on PC clusters and GRID

Applicationtasks

Clusters GRID

Page 5: Java による MPI の実装と評価

Genetic Algorithms

生物の遺伝と進化を模擬した最適化手法

交叉による探索

突然変異による探索

選択による探索領域の絞りこみ

多点探索

Page 6: Java による MPI の実装と評価

Parallel Genetic Algorithms

Page 7: Java による MPI の実装と評価

Individual Information

Gene1001110011

Fitness Value

Flags Object Transport

name

Page 8: Java による MPI の実装と評価

Sample Class

Class Individual

char[] nameInt[] genefloat fitness valueInt[] flags

Page 9: Java による MPI の実装と評価

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 の実装と評価

Object Types

Sender Receiver

Send

(individual)

Recv

(individual)

Page 11: Java による MPI の実装と評価

Bottleneck

Message passing

Page 12: Java による MPI の実装と評価

MPI

•For Fortran / C / C++

•For Java

Defined

Almost Defined

Message Passing InterfaceStandard API Set

Page 13: Java による MPI の実装と評価

Java-MPImpijava

•Object Transport

•Interface To Native MPI

MPIJ•Full Java Implementation

•Shared Memory Support

Page 14: Java による MPI の実装と評価

Objective

Deriving Java Merits

Java-MPI

Page 15: Java による MPI の実装と評価

Features

1. Object Transport

2. Full Java Implementation

3. Self Start-up

4. Shared Memory Support

Page 16: Java による MPI の実装と評価

Target 1Cluster

Page 17: Java による MPI の実装と評価

Target 2Multi Processor Machine

Page 18: Java による MPI の実装と評価

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 の実装と評価

Java Datatypes

•byte

•char

•short

•boolean

•int

•long

•float

•double

Primitive Types Object Types

Other All

Page 20: Java による MPI の実装と評価

Marsharing

System.arraycopy

countoffset

writeObject

ObjectOutputStream

Message Buffer

MessageObject

System. arraycopy

countoffset

readObject

ObjectInputStream

Message Buffer

MessageObject

Page 21: Java による MPI の実装と評価

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 の実装と評価

Extended Method

pass reference

writeObject

ObjectOutputStream

Message Buffer

MessageObject

readObject

ObjectInputStream

pass reference

Message Buffer

MessageObject

Page 23: Java による MPI の実装と評価

How To Launch

JDK Style> java class

This MPI> java -Dnp=n class

MPICH> mpirun -np n exefile

Page 24: Java による MPI の実装と評価

Spawning Tasks

Launching

Command

Page 25: Java による MPI の実装と評価

MPI.init

Java-MPI Binding

Our Implementation

Void init(String[] args)

Void init(String name_of_class, String[] args)

Page 26: Java による MPI の実装と評価

SMP Cluster

Page 27: Java による MPI の実装と評価

Experiment Environment

Pentium 3500MHz2 Way SMPLinux 2.2.12Blackdown JDK1.2.2 RC3

Switching HUB

100BASE-TX

Page 28: Java による MPI の実装と評価

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 の実装と評価

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 の実装と評価

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 の実装と評価

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 の実装と評価

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 の実装と評価

Conclusion (2/2)

5. Inter Node Communication

6. Intra Node Communication

Slower Than MPICH

Faster Than MPICH

Page 34: Java による MPI の実装と評価

Future Works

より高率的な実装1 K 付近での Bandwidth の落ち込みの特定Marshalling による通信遅延の検討最適化アプリケーションなどでの実際の使用その他