Investigating Concurrency in the Co-Simulation Orchestration Engine for INTO-CPS

There is a tendency to expect, that taking advantage of multicore systems by using concurrency improves the performance of an application. To investigate if this is true, a case study was performed where different concurrency principles were applied to an existing application called the Co-Simulation Orchestration Engine (COE), which did not utilize concurrency. This was explored in the context of Co-Simulation using the Functional Mock-up Interface, as applications executing Co-Simulations should be performant to enable the use of increasingly complex models. Co-Simulation can be useful in the development of Cyber-Physical Systems, as it can be used to simulate coupled technical systems or models and thereby examine the behavior of the systems. The investigation was carried out by refactoring the COE to make it suitable for implementing concurrency by limiting the spawning of threads and synchronization between threads, along with maximizing the workload for each thread. Three different concurrency features were used in three different implementations: Parallel collections, futures, and actors, which were evaluated based on selected quality attributes. These implementations were tested against the non-refactored sequential COE and each other by performing different simulations using different models. The case study showed, that concurrency can be used to increase the performance of the COE in some cases. Based on the analysis carried out in this thesis project, a set of guidelines were created to generalize the process of applying concurrency to an existing application.

[1]  Mark Persoff UK , 1999, EC Tax Review.

[2]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[3]  Derek J. Pike,et al.  Empirical Model‐building and Response Surfaces. , 1988 .

[4]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[5]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[6]  Martin Reiser Oberon system - user guide and programmer's manual , 1991 .

[7]  Daniel Weise,et al.  Continuing Into the Future: On the Interaction of Futures and First-Class Continuations , 1989, Workshop on Parallel Lisp.

[8]  David Broman,et al.  Determinate composition of FMUs for co-simulation , 2013, 2013 Proceedings of the International Conference on Embedded Software (EMSOFT).

[9]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[10]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[11]  Martin Odersky,et al.  A Generic Parallel Collection Framework , 2011, Euro-Par.

[12]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.