1 / 36

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

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.

raquel
Download Presentation

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

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert Going Parallel Take 2

  2. Format Recap of Gatlinburg Talk... ... only in Reverse... ... Conceptually, not literally.

  3. 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 );

  4. 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

  5. Big Picture • What is the largest set of MxN Redistributable components? • How do we allow developers to add to this set? • Generality over Performance

  6. 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

  7. Last few Rhetorical Questions • Can we employ a similar strategy for MxN? • Corollaries • If so, which one? • How?

  8. 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

  9. 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

  10. 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! ;-)

  11. 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” !

  12. 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

  13. Now Drilling One Level Deeper...

  14. 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

  15. 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

  16. Out of Process Components Application Stubs IPC IORs IORs IPC Skels Impls

  17. Remote Components Application Line Protocol Stubs Unmarshaler Internet IORs IORs Marshaler Skels Line Protocol Impls

  18. 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

  19. 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);};

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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)

  32. Open Questions • Non-general, Optimized Solutions • Client-side Caching issues • Fault Tolerance • Subcomponent Migration • Inter vs. Intra component communication • MxN , MxP, or MxPxQxN

  33. MxPxQxN Problem Long-Haul Network

  34. MxPxQxN Problem Long-Haul Network

  35. TheEnd

  36. 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

More Related