under the supervision of christian pérez insa de rennes

51
Ph.D. Defense by Julien Bigot, December 6 th 2010 Generic Support of Composition Operators in Software Component Models, Application to Scientific Computing Under the supervision of Christian Pérez INSA de Rennes INRIA Team-Projects PARIS(IRISA) / GRAAL(LIP)

Upload: amory

Post on 17-Mar-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Ph.D. Defense by Julien Bigot, December 6 th 2010. Generic Support of Composition Operators in Software Component Models, Application to Scientific Computing. Under the supervision of Christian Pérez INSA de Rennes INRIA Team-Projects PARIS(IRISA) / GRAAL(LIP). Complex applications - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Under the supervision of Christian Pérez INSA de Rennes

Ph.D. Defense by Julien Bigot, December 6th 2010

Generic Support of Composition Operators in

Software Component Models,Application to Scientific Computing

Under the supervision of Christian Pérez

INSA de RennesINRIA Team-Projects PARIS(IRISA) / GRAAL(LIP)

Page 2: Under the supervision of Christian Pérez INSA de Rennes

2

Context: Scientific Applications

• Complex applications Coupling of independent

codes→ Developed by distinct teams

Long life-cycle→ longer than hardware

• Computational intensive (HPC),

=> requires complex hardware Supercomputers

Computing clusters

Computing grids

Clouds

Thermal

Optics

Dynamics

Structural Mechanics

SAN SAN

ClusterLAN

WAN

Supercomputer

GridSupercomputer

Cluster

Satellite modeling ? programmingmodels

Page 3: Under the supervision of Christian Pérez INSA de Rennes

3

Context:Parallel/Distributed Computing Paradigms

• Shared memory Implementations

→ OS (node level)→ kDDM (cluster level)→ Juxmem (grid level)→ …

DSM

Page 4: Under the supervision of Christian Pérez INSA de Rennes

4

Context:Parallel/Distributed Computing Paradigms

• Shared memory Implementations

→ OS (node level)→ kDDM (cluster level)→ Juxmem (grid level)

• Message passing Implementations

→ MPI→ PVM→ Charm++→ …

Variations→ Collective operations

• Barrier• Broadcast• Scatter• …

Page 5: Under the supervision of Christian Pérez INSA de Rennes

5

Context:Parallel/Distributed Computing Paradigms

• Shared memory Implementations

→ OS (node level)→ kDDM (cluster level)→ Juxmem (grid level)

• Message passing Implementations

→ MPI→ PVM→ Charm++

Variations→ Collective operations

• Remote procedure/methods calls Implementations

→ ONC RPC→ Corba→ Java RMI→ …

Variations→ Parallel procedure call (PaCO++)→ Master / worker (GridRPC)

Page 6: Under the supervision of Christian Pérez INSA de Rennes

6

Context:Parallel/Distributed Computing Paradigms

• Shared memory Implementations

→ OS (node level)→ kDDM (cluster level)→ Juxmem (grid level)

• Message passing Implementations

→ MPI→ PVM→ Charm++

Variations→ Collective operations

• Increased abstraction level Easier programming

Various implementations for various hardware

• Centered on communication medium Application architecture not dealt with

Makes reuse difficult

• Remote procedure/methods calls Implementations

→ ONC RPC→ Corba→ Java RMI

Variations→ Parallel procedure call (Paco++)→ Master / worker (GridRPC)

Page 7: Under the supervision of Christian Pérez INSA de Rennes

7

Context:Composition-Based Programming

• Components Black boxes

Interactions through well defined interaction points

• Application Component instance assembly

High level view of architecture

• Implementation Primitive: C++, Fortran, Java

Composite (Assembly)

• Dimension Spatial (classical models)

→ CCA, CCM, Fractal, SCA

Temporal (workflow/dataflow)→ Kepler, Triana

C3

C2 C1

T1 T2

e

cd

a

b

f

Page 8: Under the supervision of Christian Pérez INSA de Rennes

8

Context:Composition-Based Programming

• Algorithmic skeletons Predefined set of composition patterns

→ Farm (master/worker)→ Pipeline→ Map→ Reduce→ …

Focus: decoupling→ User:

application related concerns (what)→ Skeleton developer:

hardware related concerns (how)

Implementations→ Multiple libraries→ P3L→ Assist→ …

Farm

Page 9: Under the supervision of Christian Pérez INSA de Rennes

9

Context:Components for Parallel Computing

• Parallel/distributed programming paradigms

Hidden architecture

Reuse complex

Hardware resource abstraction

Efficiency on various hardware

• Composition-based models

High-level view of architecture

Eased reuse

Hardware specific assemblies

Parallelism-oriented composition-based model

Page 10: Under the supervision of Christian Pérez INSA de Rennes

10

Context:Components for Parallel Computing

• Memory sharing between components CCA & CCM Extensions

• Parallel components CCA, SCIRun2, GridCCM

• Collective communications CCM Extension

• Parallel method calls SCIRun2, GridCCM

• Master / worker support CCA & CCM Extensions

• Some algorithmic skeletons in assemblies STKM

• Two type of features Component implementations

→ ≈ skeletons

Component interactions

Page 11: Under the supervision of Christian Pérez INSA de Rennes

11

Context:Existing Models Limitations

• Limited set of features in each model => Combination in a single model

• Unlimited set of features (including application specific) => Extensibility of composition patterns

Thermal

Structural Mechanics

Dynamics

Optics

CollComm

CollComm

Page 12: Under the supervision of Christian Pérez INSA de Rennes

12

Context:Problematic

• Goals for an extensible component model

User code reuse

Reusable composition patterns

Reusable inter-component interactions

Efficiency on various hardware

• Required concepts

Components

User-definable skeletons

User-definable connectors

Multiple implementations with hardware-dependant choice

• Problems How to support user-defined skeleton implementations ?

How will all the concepts behave when combined ?

Page 13: Under the supervision of Christian Pérez INSA de Rennes

13

Outline

• Context of the Study

• Software Skeletons as Generic Composites

• HLCM: a Model Extensible with Composition Patterns

• HLCM in Practice

• Conclusion

Page 14: Under the supervision of Christian Pérez INSA de Rennes

14

Software Skeletons with Components:Motivating Example

coord pixel

• Goal Generating pictures of the

Mandelbrot set

• Embarrassingly parallel problem C = (x,y)

Z0 = 0, Zn+1 = Zn² + C→ Bounded → black→ Unbounded → blue

• Hardware Quad-core processor

• Task farm 4 workers

Input: coordinate

Output: pixel color

Page 15: Under the supervision of Christian Pérez INSA de Rennes

15

Software Skeletons with Components:A Component Based Farm

Coord Pixel

CoordDisp

PixColl

MandelWorker

MandelWorker

MandelWorker

MandelWorker

MandelbrotFarm

Page 16: Under the supervision of Christian Pérez INSA de Rennes

16

Software Skeletons with Components:Limitations of Component Based Farm

• Hard Coded in the composite Type of the worker

Type of the interfaces

Number of workers

• Limited reuse For a distinct calculation

For distinct hardware

Coord Pixel

CoordDisp

PixColl

MandelWorker

MandelWorker

MandelWorker

MandelWorker

MandelbrotFarm

Page 17: Under the supervision of Christian Pérez INSA de Rennes

17

Software Skeletons with Components:A Component Based Farm

Coord Pixel

CoordDisp

PixColl

MandelWorker

MandelWorker

MandelWorker

MandelWorker

MandelbrotFarm

Page 18: Under the supervision of Christian Pérez INSA de Rennes

18

Software Skeletons with Components:Introducing Parameters

Coord Pixel

CoordDisp

PixColl

W

W

W

W

Farm<W>

Page 19: Under the supervision of Christian Pérez INSA de Rennes

19

Software Skeletons with Components:Introducing Parameters

I O

Disp<I> Coll<O>

W

W

W

W

Farm<W, I, O>

Page 20: Under the supervision of Christian Pérez INSA de Rennes

20

Software Skeletons with Components:Introducing Parameters

Disp<I> Coll<O>

W

W

W

Farm<W, I, O, N>

.

.

.N timesGeneric

ityI O

Page 21: Under the supervision of Christian Pérez INSA de Rennes

21

Software Skeletons with Components:Concepts for Genericity

• Generic artifacts Accept 2nd order parameters

Use the values of parameters in their implementation

public class GenClass<T> {private T _val;public T getVal() {

return _v;}…

}

template<typename T>T increment (T val) {

T result = val;result += 1;

return result;}

Java

C++

GenCmp<C>

C CmpA

Page 22: Under the supervision of Christian Pérez INSA de Rennes

22

MyComposite

Software Skeletons with Components:Concepts for Genericity

• Specializations Use of generic artifacts

Arguments bind parameters to actual values

GenClass<String> gs = new GenClass<String>();

String s = gs.getVal();GenClass<Integer> gi = new GenClass<Integer>();…

int i = 42;i = increment<int>(i);

float f = 35.69;f = increment<double>(f);…

Java

C++

GenCmp<MyCmp>

MyCmp

AnotherMyCmp CmpA

Page 23: Under the supervision of Christian Pérez INSA de Rennes

23

Software Skeletons with Components:Metamodel-based Transformation

GenericCMMeta-Model

S:GenericCMsource files

D:CM

source filesS Model D Model

CMMeta-Model CM:

Non-generic Supported

GenericCM: Generic Unsupported

component App { content { composite { decl { Decrement_Composite D; Viewer v; Decrement d1; d1.h_log_port -- v.v_log_port; D.h_log_port -- v.v_log_port; d1.dp_dec_port -- D.du_dec_port; d1.du_dec_port -- D.dp_dec_port; set d1.Number 3; } service run { seq { exec d1.export; exec D; } } } }}

component App { content { composite { decl { Decrement_Composite D; Viewer v; Decrement d1; d1.h_log_port -- v.v_log_port; D.h_log_port -- v.v_log_port; d1.dp_dec_port -- D.du_dec_port; d1.du_dec_port -- D.dp_dec_port; set d1.Number 3; } service run { seq { exec d1.export; exec D; } } } }}

Semantically equivalent

GenericCMMeta-ModelParsing Transformation Dump

A

TB<T>

B<A>C

A

AB_0

D

B<D>

B_0C

B_1

DB_1

D

Page 24: Under the supervision of Christian Pérez INSA de Rennes

24

Software Skeletons with Components:Deriving a Metamodel with Genericity

• Example Generic artifact

→ ComponentType

Artifact usable as parameter→ PortType

• Additional modifications Default values for parameters

Constraints on parameter values

Explicit specializations

Meta-programming

Port

PortTypeParam

PortTypeArgComponentType

PortType

ComponentInstance

Page 25: Under the supervision of Christian Pérez INSA de Rennes

25

Software Skeletons with Components:Transformation

• Specialized compilation C++ approach

Makes template meta-programming possible

• Algorithm Copy non generic elements

For each generic reference→ Create a context

(parameter value)→ Copy the generic element in that

context

A

TB<T>B<A>

C

A AB_0

D B<D>

B_0C

B_1

DB_1D

Page 26: Under the supervision of Christian Pérez INSA de Rennes

26

Software Skeletons with Components:Summary

• Defined genericity for component models Straight-forward meta-model extension

Independent of the component model→ SCA (100 class) GenericSCA (+20 class)→ ULCM (71 class) GULCM (+24 class)

• Proposed an approach for genericity execution support Transformation

→ generic model non-generic, executable equivalent

Relies on model-driven engineering approach→ Implemented using Eclipse Modeling Framework (EMF)

• Make skeleton implementation possible Implemented skeletons: task farm (pixel, tile), …

→ Computed pictures of the Mandelbrot set

Page 27: Under the supervision of Christian Pérez INSA de Rennes

27

Outline

• Context of the Study

• Software Skeletons as Generic Composites

• HLCM: a Model Extensible with Composition Patterns

• HLCM in Practice

• Conclusion

Page 28: Under the supervision of Christian Pérez INSA de Rennes

28

Combining All Concepts in HLCM:Aims & Approach

• Aims Support user-defined extensions

Hierarchy Genericity→ Interactions: connectors→ Adaptation to hardware: implementation choice

Maximize reuse→ Existing user code => component models

• Approach Abstract model: primitive concepts taken from backend model

→ HLCM Specializations (HLCM + CCM => HLCM/CCM)

Deployment time transformation→ Hardware resources taken into account→ Fall back to backend

→ Skeletons:

Page 29: Under the supervision of Christian Pérez INSA de Rennes

29

Combining All Concepts in HLCM:Component Implementation Choice

• Distinguish component type & component implementation

Component type→ Generic→ List of ports

Component implementation→ Generic→ Implemented component type

specialization→ Content description

• Primitive• Composite

• Choice at deployment time Match used specialization &

implemented specialization

Choose amongst possible

CmpA<T>

A2

A1 A3<X>

T=XT=BT=C

CmpA<B>

A3<B>

T=B

component CmpA<component T> exposes {provide<Itf> p;

}

primitive A1implements CmpA<B>{ …}

composite A3<component X>implements CmpA<X>{ …}

Page 30: Under the supervision of Christian Pérez INSA de Rennes

30

UP

Combining All Concepts in HLCM:Introducing Connectors from ADLs

• Without connectors Direct connection between ports

Predefined set of supported interactions

• Connectors A concept from ADLs

Connectors reify interaction types→ A Name→ Set of named roles

Instance are called connections→ Each role fulfilled by a set of ports

Fisrt class entity

CmpA CmpB

CmpC CmpD

CmpA CmpB

CmpC CmpDEvent

ports

roles

user provider

Page 31: Under the supervision of Christian Pérez INSA de Rennes

31

Combining All Concepts in HLCM:Generators

• Generator = connector implementation

• 1 connector multiple generators

Distinct constraints→ Port types→ Component placement

• Two kinds of generators Primitive

User-defined→ Composite

• Intrinsically generic Type of ports fulfilling roles

generic parameters

UP

interface = UT interface = PT

When PT subtype of UT &&user.host == provider.host

UP

connector UP < role user, role provider >;

generator IPC < interface UT, interface PT >implements UP<user={UT}, provider={PT}>when UT super PT && user.host == provider.host{ Stub<UT> stub; Skel<PT> skel; …}

Skel<PT>UP Stub

<UT>Unix

socket

user provider

IPC

Page 32: Under the supervision of Christian Pérez INSA de Rennes

32

SharedData

Combining All Concepts in HLCM:Concepts Interactions

SeqBSeqASeqA SeqB

Page 33: Under the supervision of Christian Pérez INSA de Rennes

33

SharedData

Combining All Concepts in HLCM: Concepts Interactions

C0

ParallelA ParallelB

.

.

.

M times

MPI

MPI

.

.

.

N times

C1

CM

D0

D1

DN

Adapt Adapt

0

1

M

0

1

N

C

C

C

D

D

D

Page 34: Under the supervision of Christian Pérez INSA de Rennes

34

Shared

Data

Combining All Concepts in HLCM: Concepts Interactions

ParallelA ParallelB

.

.

.

MPI

MPI

.

.

.M times N times

C0

C1

CM

D0

D1

DN

0

1

M

0

1

N

C

C

C

D

D

D

Page 35: Under the supervision of Christian Pérez INSA de Rennes

35

Combining All Concepts in HLCM:Introducing Open Connections

ParallelA ParallelB

.

.

.M times

.

.

.N times

SharedData

SharedData

SharedData

SharedData

SharedData

Merge

SharedData

SharedData

SharedData

C

C

C

Merge

Merge

Merge

Merge

Merge

Merge

MPI

MPI

MPI

MPI

MPI

MPI

D

D

D

SharedData

Shared

Data

Page 36: Under the supervision of Christian Pérez INSA de Rennes

36

Combining All Concepts in HLCM:Introducing Open Connections

• Connection: Connector

Mapping: role -> set(ports)

• Merge({ ConnA, ConnB }) Pre: ConnectorA == ConnectorB

Each ( role r )→ Mapping: r -> set(Port)A union set(Port)B

• Component Expose named connection

→ Open connection

Composite→ Expose internal connection

Primitive→ Fill exposed connections roles UP

UPUP

merge

UPUP

merge

UP

Page 37: Under the supervision of Christian Pérez INSA de Rennes

37

Combining All Concepts in HLCM:Introducing Open Connections

ParallelA ParallelB

.

.

.M times

.

.

.N times

UP

UP

UP

MPI

MPI

MPI

MPI

MPI

MPI

UP

UP

UP

UP UP

User:multiply<MatrixBlock>

User:multiply<Matrix>

Provider:multiply<Matrix>

Provider:multiply<MatrixLine>

Page 38: Under the supervision of Christian Pérez INSA de Rennes

38

UP

• Bundle Regroup multiple open connections to fulfill a

role

• Connection adaptor Supports open connection polymorphism

→ Supported connection→ Behavior definition

Two views→ A connection implementation→ An open-connection exposer

Implemented by an assembly Used only if necessary

Combining All Concepts in HLCM:Connection Adaptors & Bundles

adaptor PushPull supports UseProvide < user={Receptacle<Push>}, provider={} > //< supported as UseProvide < user={}, provider={Facet<Pull>} > //< this{ BufferComponent buffer; merge({ buffer.pushSide, supported }); merge({ this, buffer.pullSide });}

Receptable<Push> Facet<Pull >

UPUP UPQ

UP UPQ

Receptable<Push> Facet<Pull >

Page 39: Under the supervision of Christian Pérez INSA de Rennes

39

Combining All Concepts in HLCM:Summary

• Approach Abstract model: primitive elements from backend

→ E.g. HLCM + CCM HLCM/CCM

Transformation: HLCM specialization backend→ E.g. HLCM/CCM pure CCM

• Source model (PIM) Four main concepts

→ Hierarchy, genericity, implementation choice, connectors

Additional concepts→ Open connections, merge, connection adaptors, bundles

• Transformation Merge connections (use adaptors if required)

Choose implementation

Expose composite content

• Destination model (PSM) Direct map to backend

Core: 127 Ecore classes

CCM specialization: 3 Ecore classes

41 Ecore classes

Page 40: Under the supervision of Christian Pérez INSA de Rennes

40

Outline

• Context of the Study

• Software Skeletons as Generic Composites

• HLCM: a Model Extensible with Composition Patterns

• HLCM in Practice

• Conclusion

Page 41: Under the supervision of Christian Pérez INSA de Rennes

41

Experimental Validation:A Framework for HLCM Implementation

• Model-transformation based Eclipse Modeling Tools

• HLCM/CCM source model (PIM) 490 Emfatic lines (130 Ecore classes) 25 000 generated Java lines

2000 utility Java lines

• HLCM destination model (PSM) 160 Emfatic lines (41 Ecore classes) 1500 generated Java lines

800 utility Java lines

• Transformation engine 4000 Java lines

• Already implemented connectors (HLCM/CCM) Shared Data

Collective Communications

Parallel method calls

Page 42: Under the supervision of Christian Pérez INSA de Rennes

42

Experimental Validation:Implementing shared memory

C3

C1

C2SharedMem

C3C1

C2

LocalMemoryStore

LocalUseProvide

provider

role user

generator LocalSharedMem<Integer N> implementsSharedMem< access = each(i:[1..N]) { LocalReceptacle<DataAccess> } >{ LocalMemoryStore<N> store; each(i:[1..N]) { store.access[i].user += this.access[i]; }}

Page 43: Under the supervision of Christian Pérez INSA de Rennes

43

Experimental Validation:Implementing shared memory

C3

C1

C2

PosixSharer

PosixSharer

PosixSharer

UseProvide

role user role provider

Locality Constraint«same process»

generator PosixSharedMem<Integer N> implementsSharedMem< access = each(i:[1..N]) { LocalReceptacle<DataAccess> } >when samesystem ( each(i:[1..N]) { this.access[i] } ){ each(i:[1..N]) { PosixSharer node[i]; node[i].access.user += this.access[i]; }}

C3

C1

C2

SharedMem

Page 44: Under the supervision of Christian Pérez INSA de Rennes

44

C1

C3

Experimental Validation:Implementing shared memory

C2

JuxMemManager

JuxMemPeer

JuxMemPeer

JuxMemPeer

UseProvide

generator JuxMem<Integer N> implementsSharedMem < access = each(i:[1..N]) { LocalReceptacle<DataAccess> } >{ JuxMemManager<N> manager; each(i:[1..N]) { JuxMemPeer peer[i]; peer[i].access.user += access[i]; merge ({ peer[i].internal, manager.internal[i] }); }}

C3

C1

C2

SharedMem

Page 45: Under the supervision of Christian Pérez INSA de Rennes

45

Experimental Validation:Parallel Method Calls Server

component ServiceProvider exposes{ UseProvide<provider={Facet<Service>}> s;}

bundletype ParallelFacet<Integer N, interface I>{ each(i:[1..N]) { UseProvide<provider={Facet<ServicePart>}> part[i]; }}

composite ParallelServiceProvider<Integer N> implements ServiceProvider { each(i:[1..N]) { PartialServiceProvider p[i]; } this.s.provider += ParallelServiceFacet<N> { each(i:[1..N]) { part[i] = providerPart[i].s; } }}

S2

S1

S0

ParallelServiceProvider<3>

PartialServiceProvider

ProviderPartialServiceFacet

ParallelServiceFacet<N>

provider

PartialServiceUser

C1

ParallelServiceUser<2>

PartialServiceUser

C0Merge

Page 46: Under the supervision of Christian Pérez INSA de Rennes

46

Experimental Validation: Parallel Method Calls Result

UsersideRedistributor<2,3>

UsersideRedistributor<2,3>

ServersideRedistributor<2,3>

ServersideRedistributor<2,3>

ServersideRedistributor<2,3>

C0

C1

S0

S1

S2

PartialServiceProvider

PartialServiceProvider

PartialServiceProvider

Page 47: Under the supervision of Christian Pérez INSA de Rennes

47

Experimental Validation:Parallel Method Calls Performance

Ban

dwith

par

cal

ler (

Mb/

s)

Message size (Byte)

• Comparison HLCM/CCM

Paco++

• Single cluster 1Gb Ethernet

• Parallelism 3 clients

4 servers

Page 48: Under the supervision of Christian Pérez INSA de Rennes

48

Experimental Validation:Conclusion

• HLCM Implementation Developed HLCMi: a framework for HLCM specializations implementations

HLCM/CCM: a CCM based specialization

Other specializations→ Plain Java→ CCM + plain C++→ Charm++

• Validated Good expressiveness

Good performance

No real automated choice yet

Page 49: Under the supervision of Christian Pérez INSA de Rennes

49

Outline

• Context of the Study

• Software Skeletons as Generic Composites

• HLCM: a Model Extensible with Composition Patterns

• HLCM in Practice

• Conclusion

Page 50: Under the supervision of Christian Pérez INSA de Rennes

50

Conclusion

• Identified need for an extensible component model User-defined inter-component interactions (composite generators) User-defined parameterized component implementations (skeletons)

• Introduced genericity in component models Supports user-defined skeleton implementation Applicable to existing component models Model transformation approach

• Described an extensible component model: HLCM Abstract model that relies on a backend for primitive concepts Concepts combined in HLCM

→ Hierarchy→ Genericity→ Implementation choice→ Connectors with open connections & connection adaptors

• Implemented & used A model-based implementation framework using EMF: HLCM i

Used for synthetic example implementations→ memory sharing→ parallel method calls

Page 51: Under the supervision of Christian Pérez INSA de Rennes

51

Perspectives

• More validation MapReduce ANR project (2010 - 2013)

Domain decomposition, Adaptative Mesh Refinement→ Salome (EDF, CEA) (w. Vincent Pichon)

OpenAtom (Molecular Dynamic)→ Pr Kale @ UIUC (Charm++) → Complex application, 4D/2D interaction

• Introduce the time dimension Usage

→ Change of implementation choices during execution (QoS, Data, …)→ Time related applications description (dataflow, workflow)

Problem→ Keep logical & primitive model in sync

• Study choice algorithms Choice criteria attached to model elements (w. scheduling community)

Interactions with resource management systems (w. Cristian Klein)