25
DAME: A Runtime-Compiled Engine for Derived Datatypes Tarun Prabhu William Gropp University of Illinois, Urbana-Champaign

DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

DAME: A Runtime-Compiled Engine for DerivedDatatypes

Tarun Prabhu William Gropp

University of Illinois, Urbana-Champaign

Page 2: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

What is DAME?

DAME is a language and interpreter specifically designed for datamovement

Page 3: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

What does it do?

A DAME program lets a user declaratively describe a data layout.The interpreter can then perform pack/unpack operations on this

data layout in the most efficient manner possibleA DAME program can also be compiled using a JIT approach for

even greater efficiency

Page 4: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Where is it used?

We patched MPICH to use the DAME interpreter as its datatypeprocessing engine

Page 5: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Do we really need a data-movement language?

I Writing packing loops by hand can be cumbersome

I Hand-optimized packing loop nests may not haveperformance-portability

I Declarative loops allow user to specify only the high-level datalayout and allow the runtime to pick the most efficient way ofperforming the packing

Page 6: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

An example: Matrix transpose

do i = 1, 5 do i = 1, 5do j = 1, 4 do j = 1, 4b(i,j) = a(j,i) b(j,i) = a(i,j)

I One implementation has sequential writes and strided reads,the other has strided writes and sequential reads.

I Relative performance is platform-dependent

I Neither efficient for cache-based systems.

Page 7: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

MPI Datatypes

long disps[] = { 0, 8, 16, 24 };MPI Type vector(5, 1, 4, MPI DOUBLE, &c);MPI Type create hindexed block

(4, 1, disps, c, &t ddt);MPI Type commit(&t ddt);

...MPI Pack(matrix, 1, t ddt, transpose, ..);

I Bit more verbose, but implementation can choose betweenstrided writes and sequential writes

Page 8: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Are MPI datatypes always better?

106368 143552 195968

MPICH

MVAPICH

CRAY−MPICH

OpenMPI

LAMMPS_full

Speedup (

hig

her

is b

etter)

0.0

0.5

1.0

1.5

2.0

43428 55272 63168 75012 90804

DAME

DAME−L

DAME−X

WRF_y_vec

Bytes packed/unpacked

Speedup o

ver

manual packin

g (

hig

her

is b

etter)

01

23

45

6

Figure: Communication speedup over manual packing

Page 9: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Why is the performance poor?

I Interpretation overhead

I No optimizations? (in manual packing, compiler can performsome optimizations)

I Poor choice of intermediate representation?

I . . .

These are just some possibilities.

Page 10: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

So why runtime compilation?

I Reduce interpretation overhead

I Exploit runtime information. For instance knowing loopbounds can help compiler make better optimization decisions

I Let the compiler handle platform-specific information, e.g.,cache sizes, instead of having the programmer do it all

I MPI datatypes are typically created once and reused often.Compilation overhead can be amortized

Page 11: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Design considerations

I Reduce interpretation overhead

I Maximize ability of compiler to optimize code. Expose asmuch as possible of user’s program to compiler

I Simplify partial packing/unpacking as much as possibleI Data may be transfered in packets; thus the pack/unpack code

must be able to pause and resume. Keeping this requirementfrom impacting performance is key.

I Support for memory access optimizations

I Support for runtime compilation

Page 12: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

DAME

DAME is a primitive-based language with an interpreter organizedas a stack machine

Page 13: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Matrix transpose revisited

EXITBLOCKINDEXED1(4,1,[0,8,16,24],40)VECTORFINAL(5,1,4,8)CONTIGFINAL(8)

BOTTOM

I EXIT and BOTTOM are control primitives

I The Final primitives indicate the innermost types. Exposesat least a doubly-nested loop to the compiler

I CONTIGFINAL simplifies partial packingI Not executed unless partial pack (or unpack)

Page 14: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

DAME interpreter

1. Begins at first primitive after EXIT

2. Each primitive is “pushed” onto the interpreter stack

3. At each non-final primitive, only pointers are updated

4. Actual data is moved at each Final primitive. If packing canonly be partially done, the maximum amount of data ispacked including partial blocks

5. Terminate when EXIT is encountered

Page 15: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

DAME — Optimizations made possible

I EXIT simplifies termination checks

I CONTIGFINAL simplifies resuming from partial packsbecause control jumps directly to this primitive to completethe last partially packed block

I In partial packing, the interpretation stack contains the entirestate and resuming is as simple as restoring this stack

I Memory access optimizations can be done by shufflingprimitives as desired. This is done at “commit” time.

I Other optimizations such as normalization, displacementsorting and merging can also easily be performed atcommit-time.

Page 16: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Additional optimizations possible

I Alignment can be determined most accurately and appropriateinstructions can be chosen

I Prefetching can be done more accurately because the sizes ofthe types and the cache are all known

I The main switch statement at the heart of interpretationloops is eliminated

Page 17: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Implementation I: DAME-L

First implementation using LLVM

I All the work of code generation, JIT’ted code managementhandled by LLVM’s MCJIT API.

I Plenty of optimizations available

I Overhead was terrible (commit-time was ≈100000x slowerthan non-JIT’ted DAME)

Page 18: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Implementation II: DAME-X

Alternate implementation using XED1

I Custom opcode generator with support for a very limitedsubset of x86

I Much lower compile overhead (1000x faster than DAME-L)

I Limited optimizations enabled and will only work on x86

1XED is a part of PIN - a binary instrumentation tool

Page 19: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Evaluation

I Evaluated using DDTBench by Schneider et al2

I DAME implementation was MPICH patched to use DAME asthe datatype processing engine

I Test machine was the Taub cluster at the University of Illinoisconsisting of 12-core Xeon E5 X5650 processors with anInfiniBand interconnect

I Cray MPICH was tested on Blue Waters to compareperformance over manual packing

2T. Schneider, F. Kjolstad and T. Hoefler. MPI datatype processing usingruntime compilation. EuroMPI ’13

Page 20: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Datatype create/free overheads

Create(µs) Free(µs)OM DM D-L D-X OM DM D-L D-X

FFT2 11 12 153946 967 5 7 834 10LAMMPS 816 72 439408 2636 99 13 1383 15MILC 5 3 87115 462 0 1 308 2NAS LU x 1 1 31624 235 0 1 110 1NAS LU y 2 2 77356 425 1 1 232 2NAS MG x 7 3 74376 464 3 0 248 2NAS MG y 2 2 81799 432 1 0 258 2NAS MG z 2 1 77971 431 1 1 230 2

Figure: OpenMPI, DAME, Dame+LLVM, Dame+XED respectively

Page 21: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Communication speedup (p=2)2

46

8

FFT2

Speedup (

hig

her

is b

etter)

524288 4718592 8388608 18874368

24

68

10

12

LAMMPS_full

Speedup (

hig

her

is b

etter)

106368 143552 195968

12

34

56

NAS_LU_y

Speedup (

hig

her

is b

etter)

480 4080 16320 40800

05

10

15

20

25

WRF_y_vec

Speedup (

hig

her

is b

etter)

43428 55272 63168 75012 90804

MPICH MVAPICH OpenMPI DAME DAME−L DAME−X

Page 22: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Communication speedup over manual packing (p=2)

524288 2097152 4718592 8388608 18874368

FFT2

Speedup (

hig

her

is b

etter)

0.0

0.2

0.4

0.6

0.8

1.0

1.2

106368 143552 195968

LAMMPS_full

Speedup (

hig

her

is b

etter)

0.0

0.5

1.0

1.5

2.0

Speedup (

hig

her

is b

etter)

480 1320 2560 4080 6480 16320 40800

NAS_LU_y

Speedup (

hig

her

is b

etter)

0.0

0.5

1.0

1.5

Speedup (

hig

her

is b

etter)

43428 55272 63168 75012 90804

WRF_y_vec

Speedup (

hig

her

is b

etter)

05

10

15

20

Speedup (

hig

her

is b

etter)

MPICH MVAPICH Cray−MPICH OpenMPI DAME DAME−L DAME−X

Page 23: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Overall speedup in mini-app: FFT23

1.0

1.5

2.0

2.5

3.0

n

Sp

ee

du

p (

hig

he

r is

be

tte

r)

FFT2: Total run time (p = 2)

256 768 1536 2048 4096

MPICH MVAPICH OpenMPI DAME DAME−L DAME−X

3T. Hoefler and S.GottLieb. Parallel zero-copy algorithms for fast fouriertransform and conjugate gradient using MPI datatypes. EuroMPI ’10

Page 24: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Effect of compiler optimizations (DAME-L with FFT2)

256 512 768 1024 1536 2048 4096

FFT2: Impact of optimizations on total runtime (p=2)

n

Exe

cu

tio

n t

ime

sp

ee

du

p o

ver

O0

01

23

4

01

23

4

Co

mm

it t

ime

slo

wd

ow

n o

ver

O0

O1 O2 O3O1 O2 O3

Figure: Bar graph is execution-time speedup over O0. Line graph iscommit-time slowdown (inverse speedup)

Page 25: DAME: A Runtime-Compiled Engine for Derived Datatypeswgropp.cs.illinois.edu/bib/talks/tdata/2015/eurompi.pdf · Design considerations I Reduce interpretation overhead I Maximize ability

Conclusions

I Implemented DAME, a JIT-enabled language for datamovement as the datatype processing engine in MPICH

I Experiments with DDTBench — a suite of datatypebenchmarks taken from real applications — shows consistentimprovement in communication performance over existingMPI implementations

I JIT compilation improves the performance of DAME evenfurther in many cases.

I A comparatively low-overhead special-purpose JIT compiler isbeneficial and not impractical to implement