Towards A Framework For Rapid Prototyping Of Iterative Parallel-In-Time Algorithms
Creators: name: Klatt, Torbjörn
name: Moser, Dieter
name: Speck, Robert
Publisher: name: Zenodo
Year: 2014
Subjects: PFASST
Spectral Deferred Corrections
Multi-Level Spectral Deferred Corrections
Parareal
Parallel-in-Time
Python Framework

description: Motivation

With growing interest in parallel-in-time methods many different and new solvers for ordinary differential equations have gained the attention of researchers from various fields. In order to clearly estimate the potential and limitations of these mostly iterative solvers, a modular prototyping framework not only helps to understand their properties and various facets but also allows to easily implement and test new ideas.

As an example, the “parallel full approximation scheme in space and time” (<em>PFASST</em>) and its serial counterpart, multi-level spectral deferred corrections (<em>MLSDC</em>) are composed of multiple levels and even types of spectral deferred correction sweeps which are coupled by space-time restriction and interpolation operators. These modular and interchangeable combinations of different techniques already generate a vast amount of variations with different effects on solvability and efficiency towards a diverse set of problems.

PyPinT

For a thorough and systematic analysis of methods like <em>PFASST</em> or <em>Parareal</em> we take the path of a well-planned and fully modular implementation of these algorithms. By following the object-oriented programming paradigm we create an abstract decomposition of the methods’ functional components combined in a framework for parallel-in-time algorithms. Different methods implemented in a single framework using a unified base functionality enables detailed qualitative and quantitative analysis without paying too much attention to underlying implementation details.

As a proof of concept and intermediate step, we show results for a two-dimensional parabolic test equation solved with a <em>MLSDC</em> solver coupled with a multigrid algorithm in space.

Due to its flexibility, extensibility and rather comfortable learning curve Python has an ever growing world-wide community within science, academia and industry. For <em>PyPinT</em>, it provides the building block for a flexible and unified framework, allowing fast prototyping of iterative parallel-in-time algorithms. Well-maintained and open-source third party modules such as <em>NumPy</em> and <em>SciPy</em> offer high-level interfaces to performant low-level functionalities for matrix and vector arithmetics, common mathematical methods and plotting capabilities. In addition, current efforts leave the door open for enabling <em>PyPinT</em> to be applied on HPC clusters.

Goals

Accompanying the development of parallel-in-time algorithms, new ideas can be implemented in <em>PyPinT</em> immediately. Utilizing the framework’s analysis tools such as calculation and plotting of stability regions, runtime and characteristic values (e.g. residuals), new algorithms can easily be studied in detail. Clearly defined interfaces, a strictly modular concept and different levels of abstraction enable the user to exchange certain parts of the algorithms and add his or her own methods to enrich the whole framework.

Students, undergraduate and graduate, with a basic knowledge of iterative solvers and some programming skills will be able to use and extend <em>PyPinT</em> and discover, learn and understand the mechanics of parallel-in-time methods. <em>PyPinT</em> is open-source licensed and available on GitHub, thus fostering collaboration and ease contribution of amplifications by interested people.

Ultimately, <em>PyPinT</em> should not only represent a package for applying and studying parallel-in-time methods but also provide a development environment for enhancing existing and inventing new methods. Finally, <em>PyPinT</em> can also provide valuable insight and guidance for future, performance-oriented implementations in other programming languages.