.. _dynRes software stack:
#########################
The DynRes Software Stack
#########################
The DynRes Software Stack supports dynamic resource management based on the :ref:`Dynamic Processes With PSets (DPP)` design principles.
***************
Software Layers
***************
The following figure gives an overview of the different software layers of the DynRes Software Stack.
.. image:: images/stack_layers.png
******************
Supported Software
******************
This section lists all software projects currently intgrated in the DynRes Software Stack.
Package Manager
===============
- `DynPkgs `__: A package manager to install software of the DynRes Software Stack
Applications/Examples
=====================
- `Benchmarks `__: An environment for creating, running and analyzing Dynamic Resource Management experiments and benchmarks.
- `Charm++ Examples `__: Example Application to demonstrate (Dyn)Charm++ integration.
- `DMR Examples `__: Iterative kernels Jacobi, Laplace and Conjugate Gradient demonstrating the DMR integration with DPP
- `DynPetsc Examples `__: Linear, Non-linear and timestepper examples demonstrating DynPetSc integration
- `DynRM Examples `__: Synthetic Application to demonstrate DynRM and DynPSets functionalities
- `DynTaskGraphs Examples `__: Examples of using the DynTaskGraphs Library
- `DynXBraid Examples `__: 1D heat equation examples demonstrating dynamic resources in XBraid
- `LibPFASST Examples `__: Example application demonstrating dynamic resources in LibPFASST
- `MPI Tests `__: Simple test applications to test the DPP MPI Sessions extensions
- `ML Examples `__: Example Application demonstrating dynamic resources for Machine Learning Workloads
- `MPDATA3D `__: 3D semi-Lagrangian multiscale fluid solver using DynPSets for dynamic resources
- `DynP4est Examples `__: Example Application demonstrating dynamic resources with Adaptive Mesh Refinement using DynP4est
- `PSet Monitoring Examples `__: Examples Application demonstrating PSet-based monitoring capabilities in PRRTE and OpenPMIx
Libraries
=========
- `DMR `__: A library designed to offer the global advantages of process malleability while providing a minimalist MPI-like syntax.
- `DynPetsc `__: Adaptive version of PetSc - A parallel numerical software library
- `DynPSets `__: A library to support dynamic MPI reconfiguration - inspired by DMR.
- `DTG `__: A library for implementing and running resource-dynamic MPI-based task graphs.
- `DynXBraid `__: Adaptive version of XBraid - a multigrid-based parallel-in-time library
- `DynLibPFASST `__: Adaptive version of LibPFASST - a parallel-in-time library based on the Parallel Full Approximation Scheme in Space and Time (PFASST) algorithm
- `DynP4est `__: Adaptive version of P4est - an Adaptive Mesh Refinement Framework
Programming Models and Runtime Systems
======================================
- `DynCharm++ `__: Adptive version of Charm++ - a C++-based parallel programming system, founded on the migratable-objects programming model, and supported by a novel and powerful adaptive runtime system.
- `Dynamic Open-MPI `__: Adaptive version of Open-MPI - an implementation of the MPI standard. Supportes Dynamic Resource Extensions of the MPI Sessions interface
- `Dynamic OpenPMIx `__: Adaptive version of OpenPMIx - an implementation of the PMIx Standard
- `Dynamic PRRTE `__: Adaptive version of PRRTE - the PMIx Reference Runtime environment
- `Dynamic MPI4py `__: Extends the Python MPI Bindings to the dynamic resources extesnions of the MPI Sessions Model
Resource Manager
================
- `DynRM `__: A modular, Python-based resource manager supporting Dynamic Resource Management based on DPP