13
The only (important?) components are parallel or distributed J.R. Cary Tech-X Corporation Review of components Throw out some controversial statements Looking for feedback A registry based successful approach to flexibility Additional requirements from inhomogeneous parallelism Baby steps towards parallel registries

The only (important?) components are parallel or distributed

Embed Size (px)

DESCRIPTION

The only (important?) components are parallel or distributed. J.R. Cary Tech-X Corporation Review of components Throw out some controversial statements Looking for feedback A registry based successful approach to flexibility Additional requirements from inhomogeneous parallelism - PowerPoint PPT Presentation

Citation preview

The only (important?) components are parallel or distributed

J.R. CaryTech-X Corporation

• Review of components–Throw out some controversial statements–Looking for feedback

• A registry based successful approach to flexibility• Additional requirements from inhomogeneous

parallelism• Baby steps towards parallel registries

Parallel components 2

The component: path to software Nirvana

• May present multiple interfaces–All things to all people?– Interfaces must be known

• Need not be known at link time–Found in the afterlife

Parallel components 3

For single address space, what distinguishes a component from an object?

• Components have well defined interfaces

• Components can have multiple interfaces

• Components can be stateful

• Components can be singletons (shared object lib with static data)

• Objects have well defined interfaces

• Objects can have multiple interfaces (multiple inheritance)

• Objects can be stateful• Objects can be singletons

Parallel components 4

Parallelism is "where it's at" for components

• Domain 0 to Domain 1: “Give me your left border cells”

• Domain 0 to Domain 3: “Give me your upper-left corner cell”

• Each domain provides different data (even interface) to each processor

Domain 1Domain 0

Domain 2 Domain 3

Even with just domain decomposition one now has components

Parallel components 5

You can do a heck of a lot with the above model

• VORPAL: all first-level objects (particles, fields, collision operators) exist on all domains and so are constructed on all.

• All interactions through first-leve objects only• Second-level objects (surface emitters, boundary

conditions) exist on only those procs with geometry containing that object.

Parallel components 6

Construction is through a object definition language

<Grid globalGrid>numPhysCells = [NX NY NZ]lengths = [LX LY LZ]startPositions = [XSTART YSTART ZSTART]</Grid>

<EmField adiemfld> kind = emMultiField# Electric field <Field edgeE> numComponents = 3 numGuardCells = [1 1] offset = edge

# Set E_y and E_z to zero on left boundary <BoundaryCondition leftConductor> kind = constant lowerBounds = [0 -1 -1] upperBounds = [1 NY1 NZ1] indices = [1 2] amplitudes = [0. 0.] </BoundaryCondition> </Field><EmField>

Startup: register implementationsPrior to connection time: register instances

Parallel components 7

FACETS project requires more complex coupling

Closed field lines: slow perpendicular + fast parallel transportQuantities 1DHot plasmaCollisionless, no significant atomic physics (except beams)

Open field lines (or close to): so parallel transport must balance perpendicularQuantities are 2DCool plasmaCollisional, atomic physics is important

Plasma-wall interaction is 2D

Core is essentially 1DEdge is 2DWall is a collection of 1D equations

Parallel components 8

Idealized view: surfacial couplings between phase transitions

• Core is a collisionless, 1D transport system with local, only-cross-surface fluxes

• Edge is a collisional, 2D transport system• Wall: beginning of a particle trapping matrix

1D and 2D surfacial couplings

same points

wall

Coupling

Parallel components 9

Many components, many processors, many interfaces

• Each object exists on a subset of the processors• Connecting each with other components makes life worse• Doing a one-off is not going to help the larger problem

Core

Core

Wall

Wall

Wall

Wall

Wall

Wall

Communicate among selves to get averaged values

Edge component by itself has a complex topology (a regular mesh is worth a lot of contortions)

Wall

Wall

Wall

Parallel components 10

Abstraction: processor groups, objects, interfaces

• Processor group (MPI communicator) on which one has objects (may overlap)

• Objects must register interfaces with processor group

• Must be able to query proc group for interfaces

Parallel components 11

We need a language to describe this

• Self discovery will not work– Inquire of 10000 processors what they have?

• Instead:–Global component created–Creates subcomponents (with associated

communicators) on subsets of procs–Sub components contains components–At each level, can register with parent or arbitrarily high

up in containment

Parallel components 12

We are starting on this in FACETS

<Component facets> kind = parComposer

## Define coupler <Coupler coupler> kind = aBCoupler </Coupler> <Component a> kind = seqComposer load = 1.0. . .

Parallel components 13

No conclusions: work in progress

• Flexibility obtained by registry concept– Implementations– Instances

• Need to generalize for heterogeneous case without building everything everywhere