ViennaX internally utilizes a graph to handle tasks with arbitrary data dependencies. Different scheduler kernels are provided, enabling different execution approaches. The following figure depicts the design of ViennaX.
An API provides access to the supported different scheduler kernels. A serial mode scheduler (SM) is aimed for shared-memory machines, whereas a MPI-based distributed task parallel mode scheduler (DTPM) and a data parallel mode (DDPM) scheduler enable different parallel execution approaches. Additionally, the plugin system, and the configuration facility can be accessed by the user. The core part provides fundamental functionality utilized throughout the framework, such as a task graph implementation.
A three-step plugin interface supports an initialization, execution, and finalization phase of the plugin components. The data communication is primarily based on a so called socket system, allowing input and output data sockets. ViennaX automatically handles communication, even in distributed scenarios.
The following list provides more in-depth information on the core topics: