Parallel Multiplatform Model-transformation Engine (PaMMTE)

As the model-driven engineering (MDE) became a popular software development methodology, several tools have been built to support working with MDE. Nowadays, the importance of performance is getting higher as the size of the systems grows. New solutions are needed that can take the advantage of modern hardware components and architectures. One step towards this goal is to use the unique processing power of GPUs in model-driven environments. Our overall goal is to create a graph transformation engine that fits into the parallel execution environment provided by GPUs. Our approach is based on the OpenCL framework because of its platform independence and it is referred to as PaMMTE (Parallel Multi-platform Model-transformation Engine). In this page, we present an overview of our engine and provide a demo version of PaMMTE to illustrate the achieved results.

Contact: Tamás Fekete (link) and Gergely Mezei (link)


Unlike in most of the tools, in our approach, the execution of graph transformation rules is divided into three major logical steps:

  • pattern matching logical step,
  • attribute processing logical step and finally
  • graph rewriting logical step.
The base architectural decisions of PaMMTE
Figure 1. The base architecture of PaMMTE

The three logical steps are connected to each other, they are executed sequentially:

  • Pattern-matching is responsible for searching for topological matches according to the user defined rewriting rules. In this step, only a topology graph is used. In the topology graph, all elements are represented by an elementID and a typeID. The elementID is a unique identifier of the node generated by the adapter creating the graph representation. Type information on domain elements is expressed by the typeID that contains the unique identifier of the type (metaelement) of the given element. Both elementID and typeID are integer values in order to accelerate work with them on the GPU. In the case of attributes, we create an array of data referring to the container entity by using its elementID.
  • Attribute processing works on the result of the first step and it filters the matching candidates by evaluating attribute constraints on them. The constraints are evaluated separately and sequentially. If a certain constraint fails, the candidate is dropped.
  • Rewriting applies the modifications defined in the rewriting rules by modifying the data sets representing the domain model. To avoid inconsistencies caused by parallel execution, the result is verified just before rewriting. After the rewriting, we also have to decide whether the graph transformation is finished, or another rewriting is required (for "as long as possible" type rules). Finally, if applying the rewriting rule is finished, input domain model is changed based on the data sets of the transformation using the domain adapters.

All three steps have input and output data. The data is temporally used by steps, it is not stored. Each step obtains an input data, processes it and generates the output. The data is composed of three parts:

  • the model (accessed via modelProcessing package),
  • transformation rules and
  • temporal results.


Try the demo version of PaMMTE


You can download a demo version from here. You will see the unzipped folders structure like this:

  • PaMMTE: It contains the library of the engine and all other built elements which are needed by the PaMMTE to manage the transformation. Execution of the client application happens from here. You also must define here which client application is used.
  • sampleApplIMDb: It is a sample application using the IMDb internet film database. It contains sample input data and configuration file with the user defined rewriting rules in it.
  • result: PaMMTE will place the output of the transformation and all other logging and statistic files to here. The log files can be used to evaluate the performance of the engine.



Try the SDK of PaMMTE


SDK is available: here (it also must be unzipped after downloading). The main difference between the DEMO and the SDK version is that you can integrate the last one into your own model transformation tool by following the steps in the documentation. Or you can just simply try the model transformation on your own model (you also must define the domain model).





  • T. Fekete and G. Mezei, "Truly Parallel Model-Matching Algorithm in OpenCL" in Software Engineering Trends and Techniques in Intelligent Systems: Proceedings of the 6th Computer Science On-line Conference 2017 (CSOC2017), Vol 3., Prague, Czech Republic, 2017.04.26-2017.04.29., Caldas: Springer International Publishing, 2017. pp. 116-125.