Chapter 5
Component Execution Framework

A component execution framework applies CBSE concepts, allowing to setup an application based on reusable components by connecting them accordingly. For instance, a FEM-based assembly component forwards the assembled equation system Ax  = b to a linear solver component which computes the solution vector x . As already indicated, the strength of such an approach is based on the growing potential for reusability - as more and more components are added to the set of available components - and on the significantly increased level of flexibility - as components can be exchanged in a straightforward manner. This fact is especially of interest to HPC applications, as a plethora of, for instance, linear solver libraries or finite element analysis libraries are available, consequently introducing the urge to exchange individual tools. Therefore, component execution frameworks merit special consideration for implementing simulation tools as compared to monolithic application approaches. Such frameworks thus provide an alternative to simulator software design. Most importantly, though, such frameworks can wrap - and thus reuse - already available functionality. Therefore, component execution frameworks further benefit from the LCSD approach similarly to the previously discussed device simulation framework (Figure 5.1).

In the following, an overview of today’s HPC platforms (Section 5.1) is provided. Based on the established basis for computing targets the requirements and challenges of implementing a component execution framework for the general application in the area of CSE are discussed (Section 5.2). These discussed aspects give rise to the in the course of this work developed component execution framework which is introduced in detail (Section 5.3).


pict


Figure 5.1: A component execution framework - similar to a device simulation framework - benefits from LCSD-based libraries as the available functionality is wrapped as components and can thus be used within the framework.


 5.1 High Performance Computing
  5.1.1 Shared-Memory Systems
  5.1.2 Distributed-Memory Systems
  5.1.3 Hierarchical (Hybrid) Systems
  5.1.4 Accelerators
 5.2 Requirements and Challenges
  5.2.1 Component System
  5.2.2 Data Communication
  5.2.3 Scheduler
  5.2.4 Configuration
 5.3 The ViennaX Project
  5.3.1 General
  5.3.2 Plugin System
  5.3.3 Exemplary Plugin Implementation
  5.3.4 Configuration
  5.3.5 Scheduler Kernels
  5.3.6 Examples