SlideShare a Scribd company logo
1 of 36
Download to read offline
Efficient Model Partitioning for
Distributed Model Transformations
SLE’16, 1 Nov. 2016, Amsterdam, Netherlands
Amine Benelallam
Massimo Tisi
AtlanMod team
Nantes, France
Jesús Sánchez Cuadrado
Juan de Lara
Universidad Autónoma
de Madrid, Spain
Jordi Cabot
ICREA
Open University
of Catalonia, Spain
1
2
e
hgf
a
dcb
a
d
c
b
e
h
g
f
Distributed (MOF-Compliant) model access and persistence API
a
dcb g
e
hgf d
Coordination
Task node (worker) Data node Concurrent Read/Write
Data distribution Parallel local transformation Parallel global compositionSplit1Split2
a
b c d
e
f g h
a
b c d
e
f g h
g
a
a
g
e
d
e
d
System
Assumps.
● On-demand loading, to
ensure that only needed
elements are loaded
● concurrent read/write to the
persistence backend
● fast look-up of already
loaded elements by using
caching and/or indexing
mechanisms
A.Benelallam et.al.: Distributed model-to-model transformation with ATL on MapReduce. In Proceedings of the 2015th
ACM SIGPLAN Int. Conf. on SLE
3
What makes it different than for other distributed applications?
Model Partitioning for Distributed MTs
4
I need an
example !!
Class2Relational
Atlanmod Transformation Language (ATL)
module Class2Relational;
create OUT : Relational from IN : Class ;
rule Class2Table {
from
c : Class ! Class ( not c.isAbstract )
to
out : Relational ! Table (
col <− Sequence { key } −>union ( c . attr−>select( e | not
e.multiValued ) ) −>union ( c.assoc−>select ( e | not e.mvalued )
) ,
keys <− Sequence { key } −>union ( c . assoc
−>select ( e | not e.mvalued ) )
),
key : Relational ! Column (
name <− c.name+’objectId ’ ,
type <− thisModule.getObjectIdType
)
}
[ … ]
Module
Rule
Input
pattern
Output
pattern
guard
ATL helper
binding
Class2Relational
6
Running example
7
Model elmt. Dependencies
p1 {p1, c1, a1, c2, t1}
c1 {c1, a1, att1, t1}
a1 {a1, c2}
att1 {att1, t1}
c2 {c2, att2, att3, t1}
att2 {att2, t1}
att3 {att3, t1}
t1 {t1}
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
Partitioning: Scenario I
8
Distributed (MOF-Compliant) model access API
Task nodesInput model
Model elmt. Dependencies
p1 {p1, c1, a1, c2, t1}
c1 {c1, a1, att1, t1}
a1 {a1, c2}
att1 {att1, t1}
c2 {c2, att2, att3, t1}
att2 {att2, t1}
att3 {att3, t1}
t1 {t1}
p1
att1
a1
c1
c2
t1
att3
att2
Partitioning: Scenario I
9
Distributed (MOF-Compliant) model access API
Task nodesInput model
Model elmt. Dependencies
p1 {p1, c1, a1, c2, t1}
c1 {c1, a1, att1, t1}
a1 {a1, c2}
att1 {att1, t1}
c2 {c2, att2, att3, t1}
att2 {att2, t1}
att3 {att3, t1}
t1 {t1}
p1
att1 t1
c2
a1
c1 att3
att2
p1
att1
a1
c1
c2
t1
att3
att2
Partitioning: Scenario I
10
Distributed (MOF-Compliant) model access API
Task nodesInput model
Model elmt. Dependencies
p1 {p1, c1, a1, c2, t1}
c1 {c1, a1, att1, t1}
a1 {a1, c2}
att1 {att1, t1}
c2 {c2, att2, att3, t1}
att2 {att2, t1}
att3 {att3, t1}
t1 {t1}
p1
att1
a1
c1
t1
att3
att2
c2
att1
a1
c1
t1
att3
att2
c2
8 + 7 = 15
p1
att1
a1
c1
c2
t1
att3
att2
Partitioning: Scenario II
11
Distributed (MOF-Compliant) model access API
Task nodesInput model
p1
att1
a1
c1
t1
c2
Model elmt. Dependencies
p1 {p1, c1, a1, c2, t1}
c1 {c1, a1, att1, t1}
a1 {a1, c2}
att1 {att1, t1}
c2 {c2, att2, att3, t1}
att2 {att2, t1}
att3 {att3, t1}
t1 {t1}
c2
t1
att3
att2
6 + 4 = 10 (↑%33)
p1
att1
a1
c1
c2
t1
att3
att2
# 1 Dense Structure
● Even though models are structured:
● Their density is often high & irregular
● The structure of the computation is
only known @runtime
# 2 Variating complexity
● Graph computations is often
data-driven and dictated by the
structure of the graph
● Irregular computation structure =>
Irregular computation cost
12
Simple Complex
Highly-dense
Model-data partitioning
13
● Access patterns tend to have poor
data locality
● High data access to computation
ratio
● Guarantee a balanced computational load
● Ensure a good data locality
Difficult to
x
Proposal
14
● Existing graph-data partitioning approaches
are not suitable, they either:
a. Assume that the dependency graph exists
b. Reason only on the vertex-connectivity
● We Propose a two steps approach:
I- Footprint
extraction
15
● Extract access patterns as sequences of steps
● Resulting footprints have the form:
[sourceType][. ‘( ‘?[propertyName][ ‘ ) ‘ ?∗]?]+
● Parse OCL expressions in guards, bindings, and
Helpers
● Visit OCL’s AST and perform one of the
following unary|binary operations:
○ ⊲ : chain the naviagtionCallExp
○ ⊕ : decouple the LHS and RHS into two
separate footprints (e.g. conditional
expression)
○ Ⓧ : if RHS is accessible from LHS then ⊲
otherwise ⊕ (e.g. select)
● Organize footprints by sourceType
16
:OpCallExp
(flatten)
:IteratorExp
(collect)
:IteratorExp
(reject)
:IteratorExp
(select)
:NavCallExp
(assoc)
:VarExp
(cc)
:AttrCallExp
(multiValued)
:AttrCallExp
(isAbstract)
:NavCallExp
(classes)
:VarExp
(p)
:VarExp
(c)
:VarExp
(a)
Footprint
extraction
I- Footprint
extraction
p.classes
-> reject (c | c.isAbstract)
-> collect (cc | cc.assoc
-> select (a | a.mValued))
-> flatten();
17
:OpCallExp
(flatten)
:IteratorExp
(collect)
:IteratorExp
(reject)
:IteratorExp
(select)
:NavCallExp
(assoc)
:VarExp
(cc)
:AttrCallExp
(multiValued)
:AttrCallExp
(isAbstract)
:NavCallExp
(classes)
:VarExp
(p)
:VarExp
(c)
:VarExp
(a)
Footprint
extraction
I- Footprint
extraction
p.classes
-> reject (c | c.isAbstract)
-> collect (cc | cc.assoc
-> select (a | a.mValued))
-> flatten();
FP= {Package.classes}
FP= { Package(p) }
⊲
18
:OpCallExp
(flatten)
:IteratorExp
(collect)
:IteratorExp
(reject)
:IteratorExp
(select)
:NavCallExp
(assoc)
:VarExp
(cc)
:AttrCallExp
(multiValued)
:AttrCallExp
(isAbstract)
:NavCallExp
(classes)
:VarExp
(p)
:VarExp
(c)
:VarExp
(a)
Footprint
extraction
I- Footprint
extraction
p.classes
-> reject (c | c.isAbstract)
-> collect (cc | cc.assoc
-> select (a | a.mValued))
-> flatten();
FP= { Package.classes}
FP= {Class(c)}
⊲
Ⓧ
FP= {Package.classes}
FP= { Package(p) }
⊲
19
:OpCallExp
(flatten)
:IteratorExp
(collect)
:IteratorExp
(reject)
:IteratorExp
(select)
:NavCallExp
(assoc)
:VarExp
(cc)
:AttrCallExp
(multiValued)
:AttrCallExp
(isAbstract)
:NavCallExp
(classes)
:VarExp
(p)
:VarExp
(c)
:VarExp
(a)
Footprint
extraction
I- Footprint
extraction
p.classes
-> reject (c | c.isAbstract)
-> collect (cc | cc.assoc
-> select (a |
a.mValued))
-> flatten();
FP= { Package.classes}
FP= {Class(c)}
⊲
Ⓧ
FP= {Package.classes}
FP= { Package(p) }
⊲
FP= { Class.ass }
FP= { Package.classes.ass }
FP= { Class(cc) } FP= { Attribute(a) }
FP= {Class.ass}
⊲ ⊲
Ⓧ
20
:OpCallExp
(flatten)
:IteratorExp
(collect)
:IteratorExp
(reject)
:IteratorExp
(select)
:NavCallExp
(assoc)
:VarExp
(cc)
:AttrCallExp
(multiValued)
:AttrCallExp
(isAbstract)
:NavCallExp
(classes)
:VarExp
(p)
:VarExp
(c)
:VarExp
(a)
FP= { Package.classes.ass }
FP= { Package.classes} FP= { Class.ass }
FP= { Package.classes.ass }
FP= {Package.classes}
FP= { Package(p) } FP= {Class(c)} FP= { Class(cc) } FP= { Attribute(a) }
FP= {Class.ass}
⊲ ⊲ ⊲ ⊲
Ⓧ
Ⓧ Ⓧ
Footprint
extraction
I- Footprint
extraction
p.classes
-> reject (c | c.isAbstract)
-> collect (cc | cc.assoc
-> select (a | a.mValued))
-> flatten();
I- Resulting
Footprints
21
Rules Footprints
Package2Schema Package.classes.assoc
Package.types
Class2Table
Class.assoc
Class.attr
DataType.allInstances
Attribute2Column Attribute.type
MVAttribute2Column Attribute.type
Attribute.owner
Association2Column DataType.allInstances
MVAssociation2Column Association.type
DataType.allInstances
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc
Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
II- Model
partitioning
22
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
● Greedy & bi-objective algorithm
a. Maximizing data locality
b. Balancing the machine load
● On-live approximation of dependency graph in the
form of <machine-id,nextStep>
● A buffer to delay the processing of elements not
participating to the construction of the approximate
dependency graph
● Instant assignment based on a score function
23
II- Model
partitioning
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
24
p1att3a1 c1 c2 t1att1att2
Input stream elmt. Per Machine Dependencies
c1
c2
t1
att2
a1
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
25
p1
att3a1 c1 c2 t1att1att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; }
c2 {<1,assoc>; }
t1
att2
a1
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
26
p1
att3a1 c1 c2 att1att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; }
c2 {<1,assoc>; }
t1
att2
a1
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
t1
27
p1
att3a1 c1 c2
t1
att1
att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; <2,Ø>}
c2 {<1,assoc>; }
t1 <2,Ø>
att2
a1
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
28
p1
att3a1 c1
c2
t1
att1
att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; <2,Ø>}
c2 {<1,assoc>}
t1 <2,Ø>
att2 {<1,Ø>}
att3 {<1,Ø>}
a1
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
29
p1
att3
a1
c1
c2
t1
att1
att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; <2,Ø>}
c2 {<1,assoc>}
t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>}
att2 {<1,Ø>}
att3 {<1,Ø>}
a1 {<2,Ø>}
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
30
p1
att3
a1
c1
c2
t1
att1
att2
Input stream elmt. Per Machine Dependencies
c1 {<1,assoc>; <2,Ø>}
c2 {<1,assoc>}
t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>}
att2 {<1,Ø>}
att3 {<1,Ø>}
a1 {<2,Ø>}
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Buffer
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
31
Input stream
Buffer
p1
att1
c2 att2
c1
att3
a1
t1
c1
a1
c2
t1
7 + 5 = 12 (↑%20)
II- Model
partitioning
● Parameters
● avgSize = 4
● var = 2
● buffCap = 2
p1 : Package
c1 : Classc2 : Class t1 : Type
att1 : Attributea1 : Assoc
att2 : Attributeatt3 : Attribute
elmt. Per Machine Dependencies
c1 {<1,assoc>; <2,Ø>}
c2 {<1,assoc>}
t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>}
att2 {<1,Ø>}
att3 {<1,Ø>}
a1 {<2,Ø>}
Types Footprints
Package Package.classes.assoc
Package.types
Class
Class.assoc, Class.attr
DataType.allInstances
Attribute Attribute.type
Attribute.owner
Association Association.type
DataType.allInstances
Type Ø
Evaluation
32
Eclipse Modeling Framework
NeoEMF/HBase
HDFS
XML Metadata Interchange
ATL-MR
HadoopTasknodes
ATL-MR Master ATL-MR Slaves
HadoopData
nodes
1. Distribute input
2. Monitor
3. Return output
Evaluation results
33
34
Limitations
● The performance of our approach may be reduced
when
a. having elements with big amounts of dependencies or
sometimes exceeding the average size of the split (e.g.
allInstances() operation)
b. having approximate graph containing false positive
dependencies (e.g. select() or reject())
c. having an unfavourable order of streamed elements.
Conclusion
● We presented our solution for efficient partitioning of distributed MTs as a
greedy algorithm.
○ We introduced an algorithm for the footprints extraction
○ We presented our greedy algorithm for stream model partitioning
○ We experimentally show the scalability of our solution (up to 16% in average)
● In future work we plan to:
○ Extending our work to balanced edge partitioning and conducting a more exhaustive study
on the impact of the model density on the partitioning strategy.
○ Improving the distribution of the intermediate transformation data (tracing information)
35
Questions
Check us out on github
https://github.com/atlanmod/ATL_MR
36

More Related Content

What's hot

Categories for the Working C++ Programmer
Categories for the Working C++ ProgrammerCategories for the Working C++ Programmer
Categories for the Working C++ ProgrammerPlatonov Sergey
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreterRoberto Nogueira
 
C __paper.docx_final
C __paper.docx_finalC __paper.docx_final
C __paper.docx_finalSumit Sar
 
storage class
storage classstorage class
storage classstudent
 
EC6612 VLSI Design Lab Manual
EC6612 VLSI Design Lab ManualEC6612 VLSI Design Lab Manual
EC6612 VLSI Design Lab Manualtamil arasan
 
TMPA-2017: Simple Type Based Alias Analysis for a VLIW Processor
TMPA-2017: Simple Type Based Alias Analysis for a VLIW ProcessorTMPA-2017: Simple Type Based Alias Analysis for a VLIW Processor
TMPA-2017: Simple Type Based Alias Analysis for a VLIW ProcessorIosif Itkin
 
Storage classes in c++
Storage classes in c++Storage classes in c++
Storage classes in c++Jaspal Singh
 
TMPA-2017: Static Checking of Array Objects in JavaScript
TMPA-2017: Static Checking of Array Objects in JavaScriptTMPA-2017: Static Checking of Array Objects in JavaScript
TMPA-2017: Static Checking of Array Objects in JavaScriptIosif Itkin
 
(7) cpp abstractions inheritance_part_ii
(7) cpp abstractions inheritance_part_ii(7) cpp abstractions inheritance_part_ii
(7) cpp abstractions inheritance_part_iiNico Ludwig
 
C aptitude 1st jan 2012
C aptitude 1st jan 2012C aptitude 1st jan 2012
C aptitude 1st jan 2012Kishor Parkhe
 
Functional programming-advantages
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantagesSergei Winitzki
 
Storage classes in c language
Storage classes in c languageStorage classes in c language
Storage classes in c languagetanmaymodi4
 
Practical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaPractical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaRoberto Casadei
 

What's hot (20)

Categories for the Working C++ Programmer
Categories for the Working C++ ProgrammerCategories for the Working C++ Programmer
Categories for the Working C++ Programmer
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreter
 
C __paper.docx_final
C __paper.docx_finalC __paper.docx_final
C __paper.docx_final
 
Jax retrospective
Jax retrospectiveJax retrospective
Jax retrospective
 
Storage classes
Storage classesStorage classes
Storage classes
 
storage class
storage classstorage class
storage class
 
Verilog lab manual (ECAD and VLSI Lab)
Verilog lab manual (ECAD and VLSI Lab)Verilog lab manual (ECAD and VLSI Lab)
Verilog lab manual (ECAD and VLSI Lab)
 
ECAD lab manual
ECAD lab manualECAD lab manual
ECAD lab manual
 
EC6612 VLSI Design Lab Manual
EC6612 VLSI Design Lab ManualEC6612 VLSI Design Lab Manual
EC6612 VLSI Design Lab Manual
 
TMPA-2017: Simple Type Based Alias Analysis for a VLIW Processor
TMPA-2017: Simple Type Based Alias Analysis for a VLIW ProcessorTMPA-2017: Simple Type Based Alias Analysis for a VLIW Processor
TMPA-2017: Simple Type Based Alias Analysis for a VLIW Processor
 
Storage classes in c++
Storage classes in c++Storage classes in c++
Storage classes in c++
 
TMPA-2017: Static Checking of Array Objects in JavaScript
TMPA-2017: Static Checking of Array Objects in JavaScriptTMPA-2017: Static Checking of Array Objects in JavaScript
TMPA-2017: Static Checking of Array Objects in JavaScript
 
(7) cpp abstractions inheritance_part_ii
(7) cpp abstractions inheritance_part_ii(7) cpp abstractions inheritance_part_ii
(7) cpp abstractions inheritance_part_ii
 
C aptitude 1st jan 2012
C aptitude 1st jan 2012C aptitude 1st jan 2012
C aptitude 1st jan 2012
 
Storage classes
Storage classesStorage classes
Storage classes
 
Storage classes
Storage classesStorage classes
Storage classes
 
Functional programming-advantages
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantages
 
Storage classes in c language
Storage classes in c languageStorage classes in c language
Storage classes in c language
 
STORAGE CLASSES
STORAGE CLASSESSTORAGE CLASSES
STORAGE CLASSES
 
Practical Aggregate Programming in Scala
Practical Aggregate Programming in ScalaPractical Aggregate Programming in Scala
Practical Aggregate Programming in Scala
 

Similar to Efficient Distributed Model Transformation Partitioning

(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_iiNico Ludwig
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIJörn Guy Süß JGS
 
Inside LoLA - Experiences from building a state space tool for place transiti...
Inside LoLA - Experiences from building a state space tool for place transiti...Inside LoLA - Experiences from building a state space tool for place transiti...
Inside LoLA - Experiences from building a state space tool for place transiti...Universität Rostock
 
Integrative Parallel Programming in HPC
Integrative Parallel Programming in HPCIntegrative Parallel Programming in HPC
Integrative Parallel Programming in HPCVictor Eijkhout
 
(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_iiNico Ludwig
 
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...Kamiya Toshihiro
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustEvan Chan
 
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...Tiziano De Matteis
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerPlatonov Sergey
 
M03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsM03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsDang Tuan
 
Actor model in .NET - Akka.NET
Actor model in .NET - Akka.NETActor model in .NET - Akka.NET
Actor model in .NET - Akka.NETKonrad Dusza
 
Open cl programming using python syntax
Open cl programming using python syntaxOpen cl programming using python syntax
Open cl programming using python syntaxcsandit
 
OpenCL programming using Python syntax
OpenCL programming using Python syntax OpenCL programming using Python syntax
OpenCL programming using Python syntax cscpconf
 
Machine learning Experiments report
Machine learning Experiments report Machine learning Experiments report
Machine learning Experiments report AlmkdadAli
 

Similar to Efficient Distributed Model Transformation Partitioning (20)

(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Ikc 2015
Ikc 2015Ikc 2015
Ikc 2015
 
Qt for beginners
Qt for beginnersQt for beginners
Qt for beginners
 
Inside LoLA - Experiences from building a state space tool for place transiti...
Inside LoLA - Experiences from building a state space tool for place transiti...Inside LoLA - Experiences from building a state space tool for place transiti...
Inside LoLA - Experiences from building a state space tool for place transiti...
 
Integrative Parallel Programming in HPC
Integrative Parallel Programming in HPCIntegrative Parallel Programming in HPC
Integrative Parallel Programming in HPC
 
SLE2015: Distributed ATL
SLE2015: Distributed ATLSLE2015: Distributed ATL
SLE2015: Distributed ATL
 
(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii(7) c sharp introduction_advanvced_features_part_ii
(7) c sharp introduction_advanvced_features_part_ii
 
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
 
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...
Parallel Patterns for Window-based Stateful Operators on Data Streams: an Alg...
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
 
M03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsM03 2 Behavioral Diagrams
M03 2 Behavioral Diagrams
 
Actor model in .NET - Akka.NET
Actor model in .NET - Akka.NETActor model in .NET - Akka.NET
Actor model in .NET - Akka.NET
 
Open cl programming using python syntax
Open cl programming using python syntaxOpen cl programming using python syntax
Open cl programming using python syntax
 
OpenCL programming using Python syntax
OpenCL programming using Python syntax OpenCL programming using Python syntax
OpenCL programming using Python syntax
 
Machine learning Experiments report
Machine learning Experiments report Machine learning Experiments report
Machine learning Experiments report
 
Matopt
MatoptMatopt
Matopt
 
CS4961-L9.ppt
CS4961-L9.pptCS4961-L9.ppt
CS4961-L9.ppt
 
Async fun
Async funAsync fun
Async fun
 

Recently uploaded

OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...NETWAYS
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Krijn Poppe
 
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝soniya singh
 
Motivation and Theory Maslow and Murray pdf
Motivation and Theory Maslow and Murray pdfMotivation and Theory Maslow and Murray pdf
Motivation and Theory Maslow and Murray pdfakankshagupta7348026
 
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...NETWAYS
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024eCommerce Institute
 
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStr
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStrSaaStr Workshop Wednesday w: Jason Lemkin, SaaStr
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStrsaastr
 
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Salam Al-Karadaghi
 
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Pooja Nehwal
 
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...henrik385807
 
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...NETWAYS
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesPooja Nehwal
 
Russian Call Girls in Kolkata Vaishnavi 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Vaishnavi 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Vaishnavi 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Vaishnavi 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfhenrik385807
 
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024eCommerce Institute
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AITatiana Gurgel
 
Philippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptPhilippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptssuser319dad
 
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...NETWAYS
 
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdf
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdfOpen Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdf
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdfhenrik385807
 
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Kayode Fayemi
 

Recently uploaded (20)

OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
OSCamp Kubernetes 2024 | SRE Challenges in Monolith to Microservices Shift at...
 
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
Presentation for the Strategic Dialogue on the Future of Agriculture, Brussel...
 
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
Call Girls in Sarojini Nagar Market Delhi 💯 Call Us 🔝8264348440🔝
 
Motivation and Theory Maslow and Murray pdf
Motivation and Theory Maslow and Murray pdfMotivation and Theory Maslow and Murray pdf
Motivation and Theory Maslow and Murray pdf
 
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
Open Source Camp Kubernetes 2024 | Monitoring Kubernetes With Icinga by Eric ...
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024
 
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStr
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStrSaaStr Workshop Wednesday w: Jason Lemkin, SaaStr
SaaStr Workshop Wednesday w: Jason Lemkin, SaaStr
 
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
Exploring protein-protein interactions by Weak Affinity Chromatography (WAC) ...
 
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
 
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
 
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
OSCamp Kubernetes 2024 | A Tester's Guide to CI_CD as an Automated Quality Co...
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
 
Russian Call Girls in Kolkata Vaishnavi 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Vaishnavi 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Vaishnavi 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Vaishnavi 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
 
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AI
 
Philippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.pptPhilippine History cavite Mutiny Report.ppt
Philippine History cavite Mutiny Report.ppt
 
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
Open Source Camp Kubernetes 2024 | Running WebAssembly on Kubernetes by Alex ...
 
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdf
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdfOpen Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdf
Open Source Strategy in Logistics 2015_Henrik Hankedvz-d-nl-log-conference.pdf
 
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
 

Efficient Distributed Model Transformation Partitioning

  • 1. Efficient Model Partitioning for Distributed Model Transformations SLE’16, 1 Nov. 2016, Amsterdam, Netherlands Amine Benelallam Massimo Tisi AtlanMod team Nantes, France Jesús Sánchez Cuadrado Juan de Lara Universidad Autónoma de Madrid, Spain Jordi Cabot ICREA Open University of Catalonia, Spain 1
  • 2. 2 e hgf a dcb a d c b e h g f Distributed (MOF-Compliant) model access and persistence API a dcb g e hgf d Coordination Task node (worker) Data node Concurrent Read/Write Data distribution Parallel local transformation Parallel global compositionSplit1Split2 a b c d e f g h a b c d e f g h g a a g e d e d System Assumps. ● On-demand loading, to ensure that only needed elements are loaded ● concurrent read/write to the persistence backend ● fast look-up of already loaded elements by using caching and/or indexing mechanisms A.Benelallam et.al.: Distributed model-to-model transformation with ATL on MapReduce. In Proceedings of the 2015th ACM SIGPLAN Int. Conf. on SLE
  • 3. 3 What makes it different than for other distributed applications? Model Partitioning for Distributed MTs
  • 4. 4 I need an example !! Class2Relational
  • 5. Atlanmod Transformation Language (ATL) module Class2Relational; create OUT : Relational from IN : Class ; rule Class2Table { from c : Class ! Class ( not c.isAbstract ) to out : Relational ! Table ( col <− Sequence { key } −>union ( c . attr−>select( e | not e.multiValued ) ) −>union ( c.assoc−>select ( e | not e.mvalued ) ) , keys <− Sequence { key } −>union ( c . assoc −>select ( e | not e.mvalued ) ) ), key : Relational ! Column ( name <− c.name+’objectId ’ , type <− thisModule.getObjectIdType ) } [ … ] Module Rule Input pattern Output pattern guard ATL helper binding
  • 7. Running example 7 Model elmt. Dependencies p1 {p1, c1, a1, c2, t1} c1 {c1, a1, att1, t1} a1 {a1, c2} att1 {att1, t1} c2 {c2, att2, att3, t1} att2 {att2, t1} att3 {att3, t1} t1 {t1} p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 8. Partitioning: Scenario I 8 Distributed (MOF-Compliant) model access API Task nodesInput model Model elmt. Dependencies p1 {p1, c1, a1, c2, t1} c1 {c1, a1, att1, t1} a1 {a1, c2} att1 {att1, t1} c2 {c2, att2, att3, t1} att2 {att2, t1} att3 {att3, t1} t1 {t1} p1 att1 a1 c1 c2 t1 att3 att2
  • 9. Partitioning: Scenario I 9 Distributed (MOF-Compliant) model access API Task nodesInput model Model elmt. Dependencies p1 {p1, c1, a1, c2, t1} c1 {c1, a1, att1, t1} a1 {a1, c2} att1 {att1, t1} c2 {c2, att2, att3, t1} att2 {att2, t1} att3 {att3, t1} t1 {t1} p1 att1 t1 c2 a1 c1 att3 att2 p1 att1 a1 c1 c2 t1 att3 att2
  • 10. Partitioning: Scenario I 10 Distributed (MOF-Compliant) model access API Task nodesInput model Model elmt. Dependencies p1 {p1, c1, a1, c2, t1} c1 {c1, a1, att1, t1} a1 {a1, c2} att1 {att1, t1} c2 {c2, att2, att3, t1} att2 {att2, t1} att3 {att3, t1} t1 {t1} p1 att1 a1 c1 t1 att3 att2 c2 att1 a1 c1 t1 att3 att2 c2 8 + 7 = 15 p1 att1 a1 c1 c2 t1 att3 att2
  • 11. Partitioning: Scenario II 11 Distributed (MOF-Compliant) model access API Task nodesInput model p1 att1 a1 c1 t1 c2 Model elmt. Dependencies p1 {p1, c1, a1, c2, t1} c1 {c1, a1, att1, t1} a1 {a1, c2} att1 {att1, t1} c2 {c2, att2, att3, t1} att2 {att2, t1} att3 {att3, t1} t1 {t1} c2 t1 att3 att2 6 + 4 = 10 (↑%33) p1 att1 a1 c1 c2 t1 att3 att2
  • 12. # 1 Dense Structure ● Even though models are structured: ● Their density is often high & irregular ● The structure of the computation is only known @runtime # 2 Variating complexity ● Graph computations is often data-driven and dictated by the structure of the graph ● Irregular computation structure => Irregular computation cost 12 Simple Complex Highly-dense
  • 13. Model-data partitioning 13 ● Access patterns tend to have poor data locality ● High data access to computation ratio ● Guarantee a balanced computational load ● Ensure a good data locality Difficult to
  • 14. x Proposal 14 ● Existing graph-data partitioning approaches are not suitable, they either: a. Assume that the dependency graph exists b. Reason only on the vertex-connectivity ● We Propose a two steps approach:
  • 15. I- Footprint extraction 15 ● Extract access patterns as sequences of steps ● Resulting footprints have the form: [sourceType][. ‘( ‘?[propertyName][ ‘ ) ‘ ?∗]?]+ ● Parse OCL expressions in guards, bindings, and Helpers ● Visit OCL’s AST and perform one of the following unary|binary operations: ○ ⊲ : chain the naviagtionCallExp ○ ⊕ : decouple the LHS and RHS into two separate footprints (e.g. conditional expression) ○ Ⓧ : if RHS is accessible from LHS then ⊲ otherwise ⊕ (e.g. select) ● Organize footprints by sourceType
  • 19. 19 :OpCallExp (flatten) :IteratorExp (collect) :IteratorExp (reject) :IteratorExp (select) :NavCallExp (assoc) :VarExp (cc) :AttrCallExp (multiValued) :AttrCallExp (isAbstract) :NavCallExp (classes) :VarExp (p) :VarExp (c) :VarExp (a) Footprint extraction I- Footprint extraction p.classes -> reject (c | c.isAbstract) -> collect (cc | cc.assoc -> select (a | a.mValued)) -> flatten(); FP= { Package.classes} FP= {Class(c)} ⊲ Ⓧ FP= {Package.classes} FP= { Package(p) } ⊲ FP= { Class.ass } FP= { Package.classes.ass } FP= { Class(cc) } FP= { Attribute(a) } FP= {Class.ass} ⊲ ⊲ Ⓧ
  • 20. 20 :OpCallExp (flatten) :IteratorExp (collect) :IteratorExp (reject) :IteratorExp (select) :NavCallExp (assoc) :VarExp (cc) :AttrCallExp (multiValued) :AttrCallExp (isAbstract) :NavCallExp (classes) :VarExp (p) :VarExp (c) :VarExp (a) FP= { Package.classes.ass } FP= { Package.classes} FP= { Class.ass } FP= { Package.classes.ass } FP= {Package.classes} FP= { Package(p) } FP= {Class(c)} FP= { Class(cc) } FP= { Attribute(a) } FP= {Class.ass} ⊲ ⊲ ⊲ ⊲ Ⓧ Ⓧ Ⓧ Footprint extraction I- Footprint extraction p.classes -> reject (c | c.isAbstract) -> collect (cc | cc.assoc -> select (a | a.mValued)) -> flatten();
  • 21. I- Resulting Footprints 21 Rules Footprints Package2Schema Package.classes.assoc Package.types Class2Table Class.assoc Class.attr DataType.allInstances Attribute2Column Attribute.type MVAttribute2Column Attribute.type Attribute.owner Association2Column DataType.allInstances MVAssociation2Column Association.type DataType.allInstances Types Footprints Package Package.classes.assoc Package.types Class Class.assoc Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø
  • 22. II- Model partitioning 22 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute ● Greedy & bi-objective algorithm a. Maximizing data locality b. Balancing the machine load ● On-live approximation of dependency graph in the form of <machine-id,nextStep> ● A buffer to delay the processing of elements not participating to the construction of the approximate dependency graph ● Instant assignment based on a score function
  • 23. 23 II- Model partitioning p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 24. 24 p1att3a1 c1 c2 t1att1att2 Input stream elmt. Per Machine Dependencies c1 c2 t1 att2 a1 Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 25. 25 p1 att3a1 c1 c2 t1att1att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; } c2 {<1,assoc>; } t1 att2 a1 Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 26. 26 p1 att3a1 c1 c2 att1att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; } c2 {<1,assoc>; } t1 att2 a1 Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute t1
  • 27. 27 p1 att3a1 c1 c2 t1 att1 att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; <2,Ø>} c2 {<1,assoc>; } t1 <2,Ø> att2 a1 Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 28. 28 p1 att3a1 c1 c2 t1 att1 att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; <2,Ø>} c2 {<1,assoc>} t1 <2,Ø> att2 {<1,Ø>} att3 {<1,Ø>} a1 Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 29. 29 p1 att3 a1 c1 c2 t1 att1 att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; <2,Ø>} c2 {<1,assoc>} t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>} att2 {<1,Ø>} att3 {<1,Ø>} a1 {<2,Ø>} Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 30. 30 p1 att3 a1 c1 c2 t1 att1 att2 Input stream elmt. Per Machine Dependencies c1 {<1,assoc>; <2,Ø>} c2 {<1,assoc>} t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>} att2 {<1,Ø>} att3 {<1,Ø>} a1 {<2,Ø>} Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø Buffer II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute
  • 31. 31 Input stream Buffer p1 att1 c2 att2 c1 att3 a1 t1 c1 a1 c2 t1 7 + 5 = 12 (↑%20) II- Model partitioning ● Parameters ● avgSize = 4 ● var = 2 ● buffCap = 2 p1 : Package c1 : Classc2 : Class t1 : Type att1 : Attributea1 : Assoc att2 : Attributeatt3 : Attribute elmt. Per Machine Dependencies c1 {<1,assoc>; <2,Ø>} c2 {<1,assoc>} t1 {<2,Ø>;<1,Ø>;<1,Ø>;<1,Ø>} att2 {<1,Ø>} att3 {<1,Ø>} a1 {<2,Ø>} Types Footprints Package Package.classes.assoc Package.types Class Class.assoc, Class.attr DataType.allInstances Attribute Attribute.type Attribute.owner Association Association.type DataType.allInstances Type Ø
  • 32. Evaluation 32 Eclipse Modeling Framework NeoEMF/HBase HDFS XML Metadata Interchange ATL-MR HadoopTasknodes ATL-MR Master ATL-MR Slaves HadoopData nodes 1. Distribute input 2. Monitor 3. Return output
  • 34. 34 Limitations ● The performance of our approach may be reduced when a. having elements with big amounts of dependencies or sometimes exceeding the average size of the split (e.g. allInstances() operation) b. having approximate graph containing false positive dependencies (e.g. select() or reject()) c. having an unfavourable order of streamed elements.
  • 35. Conclusion ● We presented our solution for efficient partitioning of distributed MTs as a greedy algorithm. ○ We introduced an algorithm for the footprints extraction ○ We presented our greedy algorithm for stream model partitioning ○ We experimentally show the scalability of our solution (up to 16% in average) ● In future work we plan to: ○ Extending our work to balanced edge partitioning and conducting a more exhaustive study on the impact of the model density on the partitioning strategy. ○ Improving the distribution of the intermediate transformation data (tracing information) 35
  • 36. Questions Check us out on github https://github.com/atlanmod/ATL_MR 36