Tammy dahlgren tom epperly scott kohn gary kumfert
Download
1 / 36

Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert - PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on

Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert. Going Parallel. Take 2. Format. Recap of Gatlinburg Talk... ... only in Reverse... ... Conceptually, not literally. x. y. 0. 0.0. .9. 0. 1.1. 1. .8. 1. 0. y. 2.2. 2. .7. 1. 2. 2. x. .6. 3. 3. 4. 5.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert' - raquel


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Tammy dahlgren tom epperly scott kohn gary kumfert

Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert

Going Parallel

Take 2


Format
Format

Recap of Gatlinburg Talk...

... only in Reverse...

... Conceptually, not literally.


Example 1 1 d vectors

x

y

0

0.0

.9

0

1.1

1

.8

1

0

y

2.2

2

.7

1

2

2

x

.6

3

3

4

5

y

3.3

3

6

7

8

.5

4

4

4.4

5

.4

9

10

5

5.5

11

Example #1: 1-D Vectors

double d = x.dot( y );


Example 2 undirected graph

0

1

2

3

4

5

6

7

8

9

10

11

Example #2: Undirected Graph

0

0

1

2

1

2

3

4

5

3

4

5

6

7

6

7

8

8

9

10

9

10

11

11


Big picture
Big Picture

  • What is the largest set of MxN Redistributable components?

  • How do we allow developers to add to this set?

  • Generality over Performance


Other complicated tasks in cs
Other Complicated Tasks in CS

  • GUI APIs

    • Java-AWT: must extend “Frame”

    • Lots of default behaviors inherited

  • Threaded Apps

    • Java: class must implement Runnable

    • Must implement methods so JVM can interact with class correctly


Last few rhetorical questions
Last few Rhetorical Questions

  • Can we employ a similar strategy for MxN?

  • Corollaries

    • If so, which one?

    • How?


Tale of two customers

Library Developer

Familiar with Component Tech.

Formal Software Training

Application Programmer

May not be aware of using Babel

May have no formal SW training

Tale of two Customers

Developer

User


Zen of babel
Zen of Babel

  • If its difficult... ... let Babel do it.

  • If its impossible for Babel... ... let developer do it.

  • If its difficult for user... ... shift burden to Babel or Developer if at all possible


Solution
Solution

  • Babel provides a MUX in its runtime

  • Parallel Distributed ComponentsMUST IMPLEMENT the MxNRedistributable Interface

  • All communication & data redistribution details hidden from user.

except performance, of course! ;-)


Ramifications
Ramifications

  • User still programs in SPMD model

  • User may not selectively exclude processes or threads from a parallel RMI

  • User may not alter communication modes (synch v. asynch, etc.)

    • Determined by Babel

    • Modifiers may be available to developer in SIDL... e.g. “oneway” !


Ramifications 2
Ramifications (2)

  • No MPI communicator connecting M to N

    • May not know M and N when driver is launched

  • M = N, M<N, M>N, M=1, N=1, Okay

  • Non-rectilinear Data, No Problem

  • Owner Computes



Babel inserts code between user developer
Babel Inserts Code between User & Developer

  • language interoperability

    • COMPLEX*(4) == complex<float>

  • virtual function dispatch

    • call foo() on interface, dispatch to implementing class

  • implement RMI

  • remap distributed data

no industry

precedent


Impls and stubs and skels
Impls and Stubs and Skels

  • Application: uses components in user’s language of choice

  • Client Side Stubs: translate from application language to C

  • Internal Object Representation: Always in C

  • Server Side Skeletons: translates IOR (in C) to component implementation language

  • Implementation: component developers choice of language. (Can be wrappers to legacy code)

Application

Stubs

IORs

Skels

Impls


Out of process components
Out of Process Components

Application

Stubs

IPC

IORs

IORs

IPC

Skels

Impls


Remote components
Remote Components

Application

Line Protocol

Stubs

Unmarshaler

Internet

IORs

IORs

Marshaler

Skels

Line Protocol

Impls


All mxn components inherit one interface
All MxN Components inherit one interface

  • All Distributed Objects are Containers

  • They are by nature subdivisible

  • If an interface can make any container “look like” a 1-D vectorthen a MUX is little more than a KELP Mover


Mxnredistributable interface
MxNRedistributable Interface

interface Serializable {

store( in Stream s ); load( in Stream s );};

interface MxNRedistributable extends Serializable {

int getGlobalSize(); local int getLocalSize(); local array<int,1> getLocal2Global(); split ( in array<int,1> maskVector, out array<MxNRedistributable,1> pieces);

merge( in array<MxNRedistributable,1> pieces);};


We saw something similar yesterday
We saw something similar yesterday

  • Kelp uses callbacks for user to define copy, serialization, etc.

  • I’m using an interface that user must implement

  • Kelp uses rectilinear regions

  • I’m using explicit local-global maps(for now)

  • Kelp has a Mover

    • most of the “guts” of the solution

    • that depends on the user callbacks

  • I’m calling it a MUX


Mxnredistributable interface in action
MxNRedistributable Interface in action

  • Last Time

    • I started with object creation

    • I handled problems as they aroze

  • This time

    • I’ll just do the MxN stuff

    • I’ll gloss over details altogether


Example 2 undirected graph1

0

1

2

3

4

5

6

7

8

9

10

11

Example #2: Undirected Graph

0

0

1

2

1

2

3

4

5

3

4

5

6

7

6

7

8

8

9

10

9

10

11

11


Pp minspantree graph

0

1

2

3

4

5

pp

0

graph

require

2

MUX

1

2

0

3

4

5

3

4

5

1

2

6

7

8

5

6

6

7

8

9

10

11

3

4

5

pp

9

10

6

7

8

6

7

8

graph

require

9

10

MUX

9

10

11

11

pp->minSpanTree( graph );

  • MUX queries graph for global size (12)

  • Graph determinesparticulardata layout(blocked)

orb

  • MUX is invoked to guaranteethat layout before render implementation is called

orb


Mux generates communication schedules client server

0

1

2

3

4

5

pp

0, 1, 2, 3

0

graph

require

2

MUX

1

2

0

3

4

5

4, 5

3

4

5

1

2

6

7

8

5

6

6

7

8

9

10

11

3

4

5

pp

6, 7

9

10

6

7

8

6

7

8

graph

require

9

10

MUX

9

10

8, 9, 10, 11

11

11

MUX generates communication schedules (client & server)

orb

orb


Mux opens communication pipes

0

1

2

3

4

5

pp

0, 1, 2, 3

0

graph

require

2

MUX

1

2

0

3

4

5

4, 5

3

4

5

1

2

6

7

8

5

6

6

7

8

9

10

11

3

4

5

pp

6, 7

9

10

6

7

8

6

7

8

graph

require

9

10

MUX

9

10

8, 9, 10, 11

11

11

MUX opens communication pipes

orb

orb


Mux splits graphs with multiple destinations server side

2

3

4

5

3

4

5

0

1

2

3

4

5

6

7

8

pp

6

7

8

0, 1, 2, 3

0

9

10

graph

require

2

MUX

1

2

0

3

4

5

4, 5

3

4

5

1

2

6

7

8

5

6

6

7

8

9

10

11

3

4

5

pp

6, 7

9

10

6

7

8

6

7

8

graph

require

9

10

MUX

9

10

8, 9, 10, 11

11

11

MUX splits graphs with multiple destinations (server-side)

orb

orb


Mux sends pieces through communication pipes persistance

2

3

4

5

3

4

5

0

1

2

3

4

5

6

7

8

pp

6

7

8

0

0

9

10

graph

require

2

MUX

1

1

2

2

0

3

4

5

3

3

4

4

5

5

1

2

6

7

8

5

5

6

6

6

7

8

9

10

11

3

4

5

pp

9

10

6

6

7

7

8

8

6

7

8

graph

require

9

9

10

10

MUX

9

10

11

11

11

MUX sends pieces through communication pipes (persistance)

orb

orb


Mux receives graphs through pipes assembles them client side

2

3

4

5

3

4

5

0

1

2

3

4

5

6

7

8

pp

0

6

7

8

0

0

9

10

graph

1

2

require

2

MUX

1

1

2

2

3

4

5

0

3

4

5

3

3

4

4

5

5

6

7

8

1

2

6

7

8

5

5

6

6

6

7

8

9

10

11

3

4

5

pp

9

10

6

6

7

7

8

8

3

4

5

6

7

8

graph

require

9

9

10

10

6

7

8

MUX

9

10

11

11

9

10

11

11

MUX receives graphs through pipes & assembles them (client side)

orb

orb


Summary
Summary

  • All distributed components are containers and subdivisable

  • The smallest globally addressable unit is an atom

  • MxNRedistributable interface reduces general component MxN problem to a 1-D array of ints

  • MxN problem is a special case of the general problem N handles to M instances

  • Babel is uniquely positioned to contribute a solution to this problem


Tentative research strategy

Java only, no Babel

serialization & RMI built-in

Build MUX

Experiment

Write Paper

Finish 0.5.x line

add serialization

add RMI

Add in technology from Fast Track

Tentative Research Strategy

Fast Track

Sure Track


Closing remarks
Closing Remarks

  • User calls without regard to data distribution

  • Developers code assuming data distributed appropriately

  • Babel does all the redistribution between the two

    • Requires Developers implementing an interface (a.k.a. callbacks)


Open questions
Open Questions

  • Non-general, Optimized Solutions

  • Client-side Caching issues

  • Fault Tolerance

  • Subcomponent Migration

  • Inter vs. Intra component communication

  • MxN , MxP, or MxPxQxN


Mxpxqxn problem
MxPxQxN Problem

Long-Haul Network


Mxpxqxn problem1
MxPxQxN Problem

Long-Haul Network


The end

TheEnd


26 Apr 2001

UCRL-VG-143383

Work performed under the auspices of the U. S. Department of Energy by the University of California, Lawrence Livermore National Laboratory under Contract W-7405-Eng-48


ad