<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Parallel Execution of Model Management Programs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sina Madani</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of York</institution>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Scalability in Model-Driven Engineering (MDE) remains an open challenge and an active research topic. This paper presents an overview of ongoing work, which aims to signi cantly improve the performance of model management tasks (e.g., transformation and validation) through parallelisation and distribution. We believe our solution will be highly scalable due to hardware trends; namely, higher core counts, diminishing single-threaded performance improvements and increasing prevalence of cloud computing. We intend to implement our solutions in the Epsilon suite of model management tools and evaluate both the performance gains and correctness of our concurrent implementation(s) using a range of models and test scripts. Initial experiments with parallelisation of the Epsilon Validation Language show promising results both in terms of correctness and performance.</p>
      </abstract>
      <kwd-group>
        <kwd>Model-Driven Engineering</kwd>
        <kwd>Concurrency</kwd>
        <kwd>Parallelism</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Scalability is one of the most oft-mentioned challenges associated with
ModelDriven Engineering (MDE) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This is especially problematic given that MDE
is best suited to large industrial contexts such as automotive (AUTOSAR) and
construction (BIM); where models may contain millions of elements.
Unfortunately, MDE tools were not initially designed to deal with models of such sizes
and therefore present a barrier to adoption [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The problem of scalability is a multi-faceted concern. On one front, the issues
are in the storage and loading of very large models (VLMs). The current
defacto standard model persistence format (XMI) and modelling framework (EMF)
do not support concurrent modi cation of models, which makes collaboration
more di cult. Another front is model management { that is, performing tasks
using models { which is typically done using domain-speci c languages (DSLs).
Such tasks include querying, validation, merging, comparison, transformation
and generation of textual artefacts. Although there are several tools which exist
for each of these tasks, few (if any) were initially designed for execution over</p>
      <p>
        This research is in its initial stages (less than 6 months), so technical developments
are in their infancy; although the overall research direction and goals are unlikely to
undergo major changes.
very large models. This is especially problematic for large models that undergo
frequent changes and need re-validating and transforming into other models
and/or artefacts, such as real-time data from sensors [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>This research aims to improve scalability by drastically reducing the
execution time of model management programs using concurrency. The scope of this
research extends to most model management tasks (i.e., not just model-to-model
transformations). For our implementation, we are targeting the Epsilon suite of
tools and domain-speci c languages.</p>
      <p>Epsilon1 o ers multiple DSLs for model management tasks. The rationale
for choosing Epsilon is that our research group is familiar with the codebase,
although the ndings should generalise to other implementations and execution
engines. It also allows us to minimise duplication since the DSLs are built on
top of a common model-oriented language. Furthermore, it provides an
opportunity to investigate the similarities of model management tasks with regards to
concurrency and highlight any challenges speci c to particular tasks.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        The main computational approaches for improving the performance of model
management programs are Incremental, Lazy and Parallel execution.
Incremental Approaches. Incrementality is a technique for avoiding
unnecessary re-computations; typically implemented using caching. In a modelling
context, the idea is that if only a subset of a source model changes, then the
program (e.g., transformation or constraint validation) can be re-executed on
the changed subset only. Incrementality is the most commonly explored solution
in the MDE literature. Works featuring incremental model-to-model
transformations are abundant { for example, in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. VIATRA2 provides incremental
querying of EMF models. For model validation, Cabot and Teniente (2006) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
present a conceptual algorithm which provides the least-work expression to
validate a constraint for a given CRUD event. As for model-to-text transformation,
the work of Ogunyomi (2016) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] uses runtime analysis (property access traces)
to identify the impact of model changes on the generated output. An interesting
tangent to incremental model transformation is proposed in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], where the
statically determinable parts of the program are computed and cached (or inlined
directly in the code) prior to execution.
      </p>
      <p>
        Lazy Approaches. Lazy evaluation refers to the notion of delaying execution
until the result is required. For instance, if a program makes a query for some
data or a computation but then never uses it, then the computation and/or
loading could have been avoided. Tisi et al. (2011) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] modi ed ATL with lazy
execution semantics for both source consumption and target navigation. Tisi et
al. (2015) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] also added lazy evaluation to OCL collections (iterators) without
breaking speci cation compatibility.
1 http://www.eclipse.org/epsilon/ 2 https://eclipse.org/viatra/
Parallel and Distributed Approaches. Parallelism is the idea of dividing the
computation or data between multiple threads, executing them simultaneously
and merging the results. Amongst the most pertinent works to our research is
LinTra [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]; which uses the Linda co-ordination language for concurrent execution
of model transformations in a distributed setting. Tisi et al. (2013) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] developed
a task-parallel version of the ATL engine by exploiting some desirable properties
of its declarative semantics; achieving 2.5x speedup for 1 million elements on a 4
core / 8 thread CPU. Benelallam et al. (2015) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] developed ATL-MR; a
modi ed ATL engine which uses the popular MapReduce [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] programming model
for distributing model transformations. This data-parallel approach achieved 3x
speedup on 8 nodes; though e cient load balancing was not considered. In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
Benelallam et al. (2016) propose an e cient partitioning method based on
footprints to compute dependencies on-the- y.
      </p>
      <p>
        Gap Analysis. All three approaches to improving performance of programs
identi ed in the literature (laziness, incrementality and parallelism) are
orthogonal. For example, laziness and incrementality are often necessary for reactive
approaches, such as [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Incrementality exploits a space-time tradeo ;
exchanging increased memory consumption for reduced computation time in the form
of caching. However, it provides no performance bene ts when the program is
executed on the model for the rst time or in a di erent environment, and is less
useful if a large proportion of the model is updated.
      </p>
      <p>As far as we are aware, there are currently no model management language
execution engines (even in prototype stage) which are reactive (i.e., incremental
+ lazy) and parallel. Furthermore, we are also not aware of any concurrent
execution engines which are capable of scaling across both local and distributed
computing resources. Although there has been increasing interest in parallel and
distributed model transformations in recent years, the same is not true of other
model management tasks such as validation, comparison and code generation.</p>
      <p>We are also not aware of any works which attempt to execute model
management programs on Graphics Processing Units (GPUs). Given the rapid pace
of developments in GPU architectures (with no sign of a slowdown) and
relatively stagnant CPU improvements in recent years, the potential performance
gains from GPU computing could be several orders of magnitude greater than
what would be achievable with CPUs. Modern graphics cards are capable of
simultaneously executing hundreds of thousands of threads, with enthusiast-grade
GPUs boasting over 11 TFLOPs compute performance. Furthermore, modern
graphics cards have several gigabytes of high-speed memory, which could be used
to store even the largest of models.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Proposed Solution</title>
      <p>Our proposed solution is to architect and implement data-parallel execution for
model management programs. This can potentially reduce execution times to a
fraction of the original without reliance on pre-computation (as with incremental
approaches). This is further justi ed by hardware developments; as almost all
modern general-purpose CPUs can execute multiple threads simultaneously. A
parallelised approach can also be distributed across multiple computers or cloud
servers for further performance bene ts; albeit being more complex due to the
need to handle node failures, communication and distributed memory.</p>
      <p>We plan to focus initially on a single task/language such as the Epsilon
Validation Language (EVL) as proof-of-concept, and then abstract the execution
semantics such that local-parallel and distributed-parallel solutions can be
handled transparently in a more or less equivalent manner for other tasks. We will
therefore initially target data-parallelism; where each thread executes the entire
program over a subset of the model. This approach is arguably more scalable and
is likely to provide better speedups because it minimizes the need for threads
to communicate, as each thread can work independently without computational
dependencies. This is especially relevant for distributed computing, where
communication costs over a network may be much higher and/or undesirable.</p>
      <p>We recognize that data dependencies are inevitable and that they pose a
signi cant challenge for a data-parallel approach. We also understand that
although parallelising the declarative parts of domain-speci c languages is
relatively straightforward, automatic parallelisation of imperative constructs is
beyond the scope of this project. However, if time permits we may also consider
parallel execution of lambda expressions ( rst-order logic operations) on
collections by assuming them to be pure functions (i.e., without side-e ects). Perhaps
the most interesting challenges we expect to face will be with the implementation
of model management tasks which mutate models; namely model
transformations and model merging, since the level of granularity with regards to concurrent
execution is likely to play a large role in the performance bene ts and the overall
complexity of the implementation.</p>
      <p>
        With regards to GPU-accelerated execution, the greatest challenge is the
notoriously limited and di cult programming model of graphics devices. Both
CUDA and OpenCL frameworks require programs to be written in a subset of the
C/C++ language; with limited support for non-primitive data types. Although
the SIMD (Single Instruction Multiple Data) architecture of GPUs is ideal for
our data-parallel approach, it is unclear whether the overhead of converting
models and scripts to a compatible format for execution on GPUs, as well as
transferring them to graphics memory, will outweigh the gains from increased
parallelisation. A potential starting point for such an investigation would be in
using MapReduce to de ne the execution semantics of a model management task
(such as in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]), since the use of MapReduce programming model is extensively
studied in the GPU computing literature (for example, in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ],
just to name a few). Since MapReduce was originally designed for distributed
computing applications, it may prove to be a more scalable solution overall
and thus worth exploring; albeit the restrictive programming model may not be
suitable for all model management tasks.
      </p>
    </sec>
    <sec id="sec-4">
      <title>Preliminary Work and Expected Contributions</title>
      <p>
        From a technical aspect, we have identi ed a number of ways to reduce the
complexity of introducing concurrency in both local and distributed scenarios;
namely JSCOOP [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Akka3, as well as automatic parallelisation
frameworks and techniques such as parallel streams, Hadoop4 and Spark5. We have
also investigated some automatic parallelisation for heterogeneous systems (i.e.,
applicable to both CPUs and GPUs), such as [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] and [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
      </p>
      <p>
        So far, our implementation has focused on parallelisation of EVL based on
previous work in an MSc project [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]; which identi ed many of the issues with
concurrent execution of EVL programs and provided prototype solutions.
Following a substantial amount of refactoring and further development, we have
observed speedups up to 3x with four threads prior to any optimisations. Our
current solution uses a xed thread pool executor service, and the granularity
of parallelisation is at the element level { that is, a new job is queued for each
model element and constraint combination.
      </p>
      <p>Whilst our research is broad in scope with many avenues for investigation,
we endeavour to make signi cant contributions to the MDE community in the
following areas:
{ Thorough investigation of the challenges and approaches to executing model
management programs concurrently
{ A prototype parallel implementation of Epsilon supporting model validation,
model comparison, model querying and model transformations
{ A study of the similarities and di erences between various model
management tasks from a concurrent computation perspective
{ An investigation of the extent to which GPU computing can be applied to
accelerate the execution of model management programs
{ An investigation of potential solutions for combining parallelism with
incrementality and laziness for various model management tasks.</p>
      <p>Our focus will be on model validation, model comparison and model-to-text
transformations as these areas are deeply under-studied with regards to
concurrent execution in the MDE literature.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Plan for Evaluation and Validation</title>
      <p>To evaluate the scalability of our solutions, we intend on utilizing a common
suite of models with varying sizes, ranging from hundreds to millions of elements.
We will then compare speedups with the original single-threaded engines using
multiple threads. We will also ensure that we test our solutions on hardware
which can execute many threads simultaneously (e.g., 16, 32 or even more).</p>
      <p>
        The domain-speci c nature of modelling applications makes it di cult to
obtain real-world models and programs from industry due to the intellectual
properties. However, alternative sources such as [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] provide a reasonable
starting point. More complex models can be obtained through the Train Benchmark
3 http://akka.io/ 4 http://hadoop.apache.org/ 5 http://spark.apache.org/
[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], which allows for parametrised model generation. Although Epsilon supports
the most commonly used model formats, it may prove challenging to nd real{
world programs to execute over these models, and even more di cult to nd
ones written in Epsilon languages. For models which have associated programs
written in another language or suite (for example, transformations written in
ATL or validations in OCL), we shall attempt to replicate the scripts as closely
as possible in Epsilon. We shall also write scripts designed solely to test the
functionality and performance of the execution engines to evaluate our
implementation. Therefore, we aim to write scripts which not only use almost all
features of the given language, but also write scripts of varying levels of
complexity so that we can evaluate the e ectiveness of a data-parallel approach as
opposed to a rule-parallel one.
      </p>
      <p>A further concern is that of correctness, since concurrent programs are
notorious for non-deterministic behaviour. Although formal veri cation methods
may theoretically be possible, they may be di cult to carry out for such large
execution engines. At the very least, we plan to write a comprehensive suite of
unit and system tests to build con dence of our implementation and results,
ensuring that the outputs of the concurrent engines are identical to those of the
original, non-concurrent engine implementations.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Current Status</title>
      <p>This research is in its initial stages (less than six months in). We are currently
working on laying down the foundations for making Epsilons engines
threadsafe and identifying the parts which can be trivially parallelised. Our intention
is to nd the optimal balance between minimizing modi cations and
architectural changes to the existing engines whilst maximizing the performance gains.
We expect the project to be complete by 2020; though we plan to publish any
signi cant intermediate results for near-complete parallelised engines sooner.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polack</surname>
            ,
            <given-names>F.A.C.</given-names>
          </string-name>
          :
          <article-title>Scalability: The Holy Grail of Model Driven Engineering</article-title>
          . In: MoDELS08 ChaMDE Workshop, pp.
          <fpage>10</fpage>
          -
          <lpage>14</lpage>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>David</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rath</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Varro</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Foundations for Streaming Model Transformations by Complex Event Processing</article-title>
          .
          <source>In: Software &amp; Systems Modeling</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>28</lpage>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Towards Incremental Execution of ATL Transformations</article-title>
          .
          <source>In: Proceedings of the Third international conference on Theory and practice of model transformations</source>
          , pp.
          <fpage>123</fpage>
          -
          <lpage>137</lpage>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Teniente</surname>
          </string-name>
          , E.:
          <article-title>Incremental Evaluation of OCL Constraints</article-title>
          .
          <source>In: Proceedings of the 18th International Conference on Advanced Information Systems Engineering</source>
          , pp.
          <volume>81</volume>
          {
          <issue>95</issue>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Ogunyomi</surname>
            ,
            <given-names>B.J.</given-names>
          </string-name>
          (
          <year>2016</year>
          )
          <article-title>: Incremental Model-to-</article-title>
          <string-name>
            <surname>Text</surname>
            <given-names>Transformation</given-names>
          </string-name>
          , Doctoral thesis, University of York.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Razavi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kontogiannis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Partial Evaluation of Model Transformations</article-title>
          .
          <source>In: Proceedings of the 34th International Conference on Software Engineering</source>
          , pp.
          <fpage>562</fpage>
          -
          <lpage>572</lpage>
          (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mart nez</surname>
          </string-name>
          , S.,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
          </string-name>
          , J.:
          <article-title>Lazy Execution of Model-to-Model Transformations</article-title>
          .
          <source>In: Proceedings of the 14th International Conference on Model Driven Engineering Languages and Systems</source>
          , pp.
          <volume>32</volume>
          {
          <issue>46</issue>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Douence</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagelaar</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Lazy evaluation for OCL</article-title>
          .
          <source>In: Proceedings of the 15th International Workshop on OCL and Textual Modeling co-located with 18th International Conference on Model Driven Engineering Languages and Systems</source>
          , Ottawa. pp.
          <fpage>46</fpage>
          -
          <lpage>61</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Burguen}o,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Troya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Vallecillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          (
          <year>2015</year>
          )
          <article-title>: Parallel In-place Model Transformations with LinTra</article-title>
          .
          <source>In: 3rd Workshop on Scalable Model Driven Engineering (BigMDE</source>
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mart nez</surname>
          </string-name>
          , S.,
          <string-name>
            <surname>Choura</surname>
          </string-name>
          , H.:
          <article-title>Parallel Execution of ATL Transformation Rules</article-title>
          .
          <source>In: Proceedings of the 16th International Conference on Model Driven Engineering Languages and Systems</source>
          , pp.
          <volume>656</volume>
          {
          <issue>672</issue>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Benelallam</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gomez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
          </string-name>
          , J.:
          <article-title>Distributed model-to-model transformation with ATL on MapReduce</article-title>
          .
          <source>In: Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language Engineering</source>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>48</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghemawat</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>MapReduce: Simpli edDataProcessingonLargeClusters</article-title>
          .
          <source>In: Sixth Symposium on Operating System Design and Implementation</source>
          , pp.
          <volume>137</volume>
          {
          <issue>149</issue>
          (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Benelallam</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cuadrado</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          , de Lara, J.,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>E cient model partitioning for distributed model transformations</article-title>
          .
          <source>In: Proceedings of the 2016 ACM SIGPLAN International Conference on Software Language Engineering</source>
          , pp.
          <volume>226</volume>
          {
          <issue>238</issue>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Govindaraju</surname>
            ,
            <given-names>N.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>He</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luo</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fang</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Mars: Accelerating MapReduce with Graphics Processors</article-title>
          .
          <source>In: IEEE Transactions on Parallel and Distributed Systems</source>
          <volume>22</volume>
          (
          <issue>4</issue>
          ), pp.
          <volume>608</volume>
          {
          <issue>620</issue>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Hong</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zheng</surname>
          </string-name>
          , W.:
          <article-title>MapCG: writing parallel program portable between CPU and GPU</article-title>
          .
          <source>In: Proceedings of the 19th international conference on Parallel architectures and compilation techniques</source>
          , pp.
          <volume>217</volume>
          {
          <issue>226</issue>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Xin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>An Implementation of GPU Accelerated MapReduce: Using Hadoop with OpenCL for Data-</article-title>
          and
          <string-name>
            <surname>Compute-Intensive Jobs</surname>
          </string-name>
          .
          <source>In: Proceedings of the 2012 International Joint Conference on Service Sciences</source>
          , pp.
          <volume>6</volume>
          {
          <issue>11</issue>
          (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. Mart nez, S.,
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Douence</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Reactive model transformation with ATL</article-title>
          .
          <source>Science of Computer Programming 136(C)</source>
          , pp.
          <volume>1</volume>
          {
          <issue>16</issue>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Torshizi</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ostro</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Doyle</surname>
            ,
            <given-names>K.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lau</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2008</year>
          ):
          <article-title>Jscoop: A highlevel concurrency framework for java</article-title>
          .
          <source>Technical Report</source>
          , York University.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Fumero</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Steuwer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dubach</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>A Composable Array Function Interface for Heterogeneous Computing in Java</article-title>
          .
          <source>In: Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming</source>
          , pp.
          <volume>44</volume>
          {
          <issue>49</issue>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Leung</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lhotak</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lashari</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Automatic parallelization for graphics processing units</article-title>
          .
          <source>In: Proceedings of the 7th International Conference on Principles and Practice of Programming in Java</source>
          , pp.
          <volume>91</volume>
          {
          <issue>100</issue>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ishizaki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hayashi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koblents</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sarkar</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Compiling and Optimizing Java 8 Programs for GPU Execution</article-title>
          .
          <source>In: 24th International Conference on Parallel Architectures and Compilation Techniques</source>
          , pp.
          <volume>419</volume>
          {
          <issue>431</issue>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2015</year>
          )
          <article-title>: Parallel Model Validation</article-title>
          ,
          <source>MSc thesis</source>
          , University of York.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>23. http://atenea.lcc.uma.es/index.php/Main_Page/Resources/LinTra</mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Szarnyas</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Izso</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rath</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Varro</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The Train Benchmark: cross-technology performance evaluation of continuous model queries</article-title>
          .
          <source>In: Software &amp; Systems Modeling</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>