5.3 The ViennaX Project

The FLOSS-based ViennaX framework facilitates the setup of flexible scientific applications by applying a CBSE (Section 3.3) approach, based on providing an execution framework for plugins [9][150][1]. In particular, ViennaX tackles the previously introduced requirements and challenges for a component execution framework (Section 5.2). The decoupling of simulations into separate components is facilitated by the framework’s plugin system. Functionality is implemented in plugins, supporting data dependencies. Most importantly, the plugin system enables a high degree of flexibility, as exchanging individual components of a simulation is reduced to switching plugins by altering the framework’s configuration data. Consequently, no changes in the simulation’s implementation must be performed, thus avoiding recompilation and knowledge of the code base. Furthermore, decoupling simulation components into plugins also increases the reusability significantly. For example, a file reader plugin for a specific file format can be utilized in different simulations. Ultimately, the effort of changing parts of the simulation is greatly reduced, strongly favoring long-term flexibility and reusability.

  5.3.1 General
  5.3.2 Plugin System
   Factory
   Interface
   Sockets
  5.3.3 Exemplary Plugin Implementation
  5.3.4 Configuration
  5.3.5 Scheduler Kernels
   Serial Mode
   Distributed Task Parallel Mode
   Distributed Data Parallel Mode
  5.3.6 Examples
   Serial Mode
   Distributed Task Parallel Mode
   Distributed Data Parallel Mode