Skip to content

Commit 70abef8

Browse files
committed
2 parents 37d4fe0 + ad3142c commit 70abef8

File tree

197 files changed

+18683
-2059
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+18683
-2059
lines changed

.github/workflows/ci_pipeline.yml

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
with:
2626
environment-file: ${{ env.YML }}
2727
create-args: >-
28-
python=3.12
28+
python=3.13
2929
- name: Code reformatting with black
3030
run: |
3131
black pySDC --check --diff --color
@@ -39,7 +39,7 @@ jobs:
3939
fail-fast: false
4040
matrix:
4141
env: ['base', 'fenics', 'mpi4py', 'petsc', 'pytorch']
42-
python: ['3.9', '3.10', '3.11', '3.12']
42+
python: ['3.9', '3.10', '3.11', '3.12', '3.13']
4343
defaults:
4444
run:
4545
shell: bash -l {0}
@@ -55,6 +55,9 @@ jobs:
5555
- name: Install additional packages as needed
5656
run: |
5757
micromamba install -y --file etc/environment-tests.yml --freeze-installed
58+
- name: Install pySDC as a package in the current environment
59+
run: |
60+
pip install --no-deps -e .
5861
- name: Run pytest for CPU stuff
5962
run: |
6063
echo "print('Loading sitecustomize.py...')
@@ -67,7 +70,7 @@ jobs:
6770
mv .coverage coverage_${{ matrix.env }}.dat
6871
- name: Uploading artifacts
6972
uses: actions/upload-artifact@v4
70-
if: matrix.python == '3.12'
73+
if: matrix.python == '3.13'
7174
with:
7275
name: test-artifacts-cpu-${{ matrix.env }}
7376
path: |
@@ -95,7 +98,6 @@ jobs:
9598
- Second_orderSDC
9699
- soft_failure
97100
- TOMS
98-
python: ['3.9', '3.10', '3.11', '3.12']
99101
defaults:
100102
run:
101103
shell: bash -l {0}
@@ -106,8 +108,6 @@ jobs:
106108
uses: mamba-org/setup-micromamba@v1
107109
with:
108110
environment-file: "pySDC/projects/${{ matrix.env }}/environment.yml"
109-
create-args: >-
110-
python=${{ matrix.python }}
111111
- name: Install additional packages as needed
112112
run: |
113113
micromamba install -y --file etc/environment-tests.yml --freeze-installed
@@ -123,7 +123,6 @@ jobs:
123123
mv .coverage coverage_${{ matrix.env }}.dat
124124
- name: Uploading artifacts
125125
uses: actions/upload-artifact@v4
126-
if: matrix.python == '3.12'
127126
with:
128127
name: test-artifacts-project-${{ matrix.env }}
129128
path: |
@@ -166,6 +165,69 @@ jobs:
166165
path: |
167166
data_libpressio
168167
coverage_libpressio.dat
168+
169+
user_firedrake_tests:
170+
runs-on: ubuntu-latest
171+
container:
172+
image: firedrakeproject/firedrake-vanilla-default:latest
173+
options: --user root
174+
volumes:
175+
- ${{ github.workspace }}:/repositories
176+
defaults:
177+
run:
178+
shell: bash -l {0}
179+
steps:
180+
- name: Fix HOME
181+
# For unknown reasons GitHub actions overwrite HOME to /github/home
182+
# which will break everything unless fixed
183+
# (https://github.com/actions/runner/issues/863)
184+
run: echo "HOME=/home/firedrake" >> "$GITHUB_ENV"
185+
- name: Checkout pySDC
186+
uses: actions/checkout@v4
187+
with:
188+
path: ./pySDC
189+
- name: Checkout gusto
190+
uses: actions/checkout@v4
191+
with:
192+
repository: firedrakeproject/gusto
193+
path: ./gusto_repo
194+
- name: Create virtual environment
195+
# pass '--system-site-packages' so Firedrake can be found
196+
run: python3 -m venv --system-site-packages venv-pySDC
197+
198+
- name: Install pySDC
199+
run: |
200+
. venv-pySDC/bin/activate
201+
pip install -e /repositories/pySDC
202+
# test installation
203+
python -c "import pySDC; print(f'pySDC module: {pySDC}')"
204+
- name: Install gusto
205+
run: |
206+
. venv-pySDC/bin/activate
207+
pip install -e /repositories/gusto_repo
208+
# test installation
209+
python -c "import gusto; print(f'gusto module: {gusto}')"
210+
- name: run pytest
211+
run: |
212+
. venv-pySDC/bin/activate
213+
firedrake-clean
214+
cd ./pySDC
215+
python -m coverage run -m pytest --continue-on-collection-errors -v --durations=0 /repositories/pySDC/pySDC/tests -m firedrake
216+
timeout-minutes: 45
217+
- name: Make coverage report
218+
run: |
219+
220+
cd ./pySDC
221+
mv data ../data_firedrake
222+
coverage combine
223+
mv .coverage ../coverage_firedrake.dat
224+
- name: Upload artifacts
225+
uses: actions/upload-artifact@v4
226+
with:
227+
name: test-artifacts-firedrake
228+
path: |
229+
data_firedrake
230+
coverage_firedrake.dat
169231
170232
user_monodomain_tests_linux:
171233
runs-on: ubuntu-latest

.github/workflows/gitlab_ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ jobs:
106106
echo "Merge the two parts of the Merge-Request to test the resulting version"
107107
git merge "${{ github.event.pull_request.head.sha }}"
108108
- name: Mirror and wait for Gitlab-CI
109-
uses: jakob-fritz/[email protected]
109+
uses: jakob-fritz/[email protected].1
110110
env:
111111
MODE: 'all' # Either 'mirror', 'get_status', 'get_artifact', or 'all'
112112
GITLAB_TOKEN: ${{ secrets.GITLAB_SECRET }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ step_*.png
1010
*.swp
1111
*_data.json
1212
!_dataRef.json
13+
*.pysdc
14+
*.vtr
1315

1416
# Created by https://www.gitignore.io
1517

.gitlab-ci.yml

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,8 @@ prepare_JUWELS:
2727
- shell
2828
script:
2929
- mkdir -p benchmarks
30-
- module --force purge
31-
- module load Stages/2024
32-
- module load GCC
33-
- module load OpenMPI
34-
- module load FFTW
35-
- module load mpi4py
36-
- module load SciPy-Stack
37-
- module load CuPy
3830
- jutil env activate -p ${JUWELS_PROJECT}
39-
- python -m venv --clear $SCRATCH/.venv/pySDC
40-
- source $SCRATCH/.venv/pySDC/bin/activate
41-
- pip install -e .
42-
- pip install pytest-benchmark coverage
43-
- git submodule add -f https://github.com/brownbaerchen/mpi4py-fft.git
44-
- cd mpi4py-fft
45-
- git checkout cupy_implementation
46-
- FFTW_LIBRARY_DIR="/p/software/juwels/stages/2024/software/FFTW/3.3.10-GCC-12.3.0/lib64" pip install --force-reinstall .
47-
- cd ../
31+
- source ./etc/venv_juwels/setup.sh
4832

4933

5034
test_JUWELS:
@@ -77,16 +61,8 @@ test_JUWELS:
7761
- sbatch.out
7862
before_script:
7963
- mkdir -p benchmarks
80-
- module --force purge
81-
- module load Stages/2024
82-
- module load GCC
83-
- module load OpenMPI
84-
- module load FFTW
85-
- module load mpi4py
86-
- module load SciPy-Stack
87-
- module load CuPy
8864
- jutil env activate -p ${JUWELS_PROJECT}
89-
- source $SCRATCH/.venv/pySDC/bin/activate
65+
- source ./etc/venv_juwels/activate.sh
9066
script:
9167
- bash etc/check_node_avail.sh || PARTITION_AVAIL=$?
9268
- if [ -n "$PARTITION_AVAIL" ] ; then exit $PARTITION_AVAIL ; fi

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
:arrow_left: [Back to main page](./README.md)
44

5+
- April 11, 2025: Version 5.6 adds a framework for MPI-parallel I/O, developed by [\@tlunet](https://github.com/tlunet), making it easier to visualize the data obtained with pySDC on HPC machines in software such as ParaView.
6+
Also, pySDC is now compatible with the finite element library [Firedrake](https://github.com/firedrakeproject/firedrake) and the geophysical fluid dynamics library
7+
[Gusto](https://github.com/firedrakeproject/gusto), thanks to [\@jshipton](https://github.com/jshipton) and [\@brownbaerchen](https://github.com/brownbaerchen).
8+
The former allows to setup PDEs with finite element discretizations in pySDC and then solve in time with SDC and PFASST, while the latter allows to setup a geophysical fluid dynamics problem and then use pySDC with any SDC setup as a timestepper in Gusto.
59
- June 24, 2024: Major summer cleanup with Version 5.5. [\@tlunet](https://github.com/tlunet) extracted all quadrature-related stuff into his new standalone code
610
[qmat](https://github.com/Parallel-in-Time/qmat), which makes pySDC much more focussed and both parts easier to maintain.
711
[\@lisawim](https://github.com/lisawim) worked a lot on the DAE sweepers (including an MPI-parallel version), while [\@brownbaerchen](https://github.com/brownbaerchen) has fun with GPUs.

CITATION.cff

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,15 @@ authors:
2828
given-names: Jakob
2929
orcid: https://orcid.org/0000-0001-6280-8396
3030
affiliation: "Jülich Supercomputing Centre, Forschungszentrum Jülich GmbH, 52425 Jülich, Germany"
31+
- family-names: Shipton
32+
given-names: Jemma
33+
orcid: https://orcid.org/0000-0002-8635-0831
34+
affiliation: "Department of Mathematics and Statistics, University of Exeter, Exeter, UK"
3135

3236

33-
version: 5.5.2
37+
version: 5.6
3438
doi: 10.5281/zenodo.594191
35-
date-released: 2024-09-23
39+
date-released: 2025-04-11
3640
keywords:
3741
- "parallel-in-time"
3842
- "spectral deferred corrections"

README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
[![fair-software.eu](https://img.shields.io/badge/fair--software.eu-%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F-green)](https://fair-software.eu)
66
[![SQAaaS badge shields.io](https://img.shields.io/badge/sqaaas%20software-silver-lightgrey)](https://api.eu.badgr.io/public/assertions/aS8J0NDTTjCyYP6iVufviQ "SQAaaS silver badge achieved")
77
[![PyPI - Downloads](https://img.shields.io/pypi/dm/pySDC?logo=pypi)](https://pypistats.org/packages/pysdc)
8+
[![HiRSE Code Promo Badge](https://img.shields.io/badge/Promo-8db427?label=HiRSE&labelColor=005aa0&link=https%3A%2F%2Fgo.fzj.de%2FCodePromo)](https://go.fzj.de/CodePromo)
9+
[![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/Parallel-in-Time/pySDC/)](https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/Parallel-in-Time/pySDC)
810

911
# Welcome to pySDC!
1012

@@ -19,8 +21,8 @@ implemented.
1921

2022
- Variants of SDC: explicit, implicit, IMEX, multi-implicit, Verlet,
2123
multi-level, diagonal, multi-step
22-
- Variants of PFASST: virtual parallel or MPI-based parallel,
23-
classical of multigrid perspective
24+
- Variants of PFASST: virtually parallel or MPI-based parallel,
25+
classical or multigrid perspective
2426
- 8 tutorials: from setting up a first collocation problem to SDC,
2527
PFASST and advanced topics
2628
- Projects: many documented projects with defined and tested outcomes
@@ -43,12 +45,11 @@ The code is hosted on GitHub, see
4345
will give you a core version of `pySDC` to work with,
4446
working with the developer version is most often the better choice. We
4547
thus recommend to checkout the code from GitHub and install the
46-
dependencies e.g. by using a [conda](https://conda.io/en/latest/)
47-
environment. For this, `pySDC` ships with environment files
48-
which can be found in the folder `etc/`. Use these as e.g.
48+
dependencies e.g. by using [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html). For this, `pySDC` ships with environment files
49+
which can be found in the folder `etc/` or within the projects. Use these as e.g.
4950

5051
``` bash
51-
conda env create -f etc/environment-base.yml
52+
micromamba create -f etc/environment-base.yml
5253
```
5354

5455
If you want to install the developer version using `pip` directly from the GitHub repository, use this:
@@ -102,7 +103,8 @@ The current software release can be cited using Zenodo:
102103

103104
`pySDC` code was originally developed by [Robert Speck (@pancetta)](https://github.com/pancetta),
104105
and is now maintained and developed by a small community of scientists interested in SDC methods.
105-
Checkout the [Changelog](./CHANGELOG.md) to see pySDC's evolution since 2016.
106+
Checkout the [Changelog](./CHANGELOG.md) to see pySDC's evolution since 2016. It has a
107+
software management plan (SWP), too, see [here](https://smw.dsw.elixir-europe.org/wizard/projects/c3dda921-b7b0-4f4d-b5dc-778b9780552d).
106108

107109
Any contribution is dearly welcome! If you want to contribute, please take the time to read our [Contribution Guidelines](./CONTRIBUTING.md)
108110
(and don't forget to take a peek at our nice [Code of Conduct](./CODE_OF_CONDUCT.md) :wink:).
@@ -112,13 +114,13 @@ Any contribution is dearly welcome! If you want to contribute, please take the t
112114
This project has received funding from the [European High-Performance
113115
Computing Joint Undertaking](https://eurohpc-ju.europa.eu/) (JU) under
114116
grant agreement No 955701 ([TIME-X](https://www.time-x-eurohpc.eu/))
115-
and grant agreement No 101118139.
117+
and grant agreement No 101118139.
116118
The JU receives support from the European Union's Horizon 2020 research
117119
and innovation programme and Belgium, France, Germany, and Switzerland.
118120
This project also received funding from the [German Federal Ministry of
119121
Education and Research](https://www.bmbf.de/bmbf/en/home/home_node.html)
120122
(BMBF) grants 16HPC047 and 16ME0679K. Supported by the European Union - NextGenerationEU.
121-
The project also received help from the [Helmholtz Platform for Research Software Engineering - Preparatory Study (HiRSE_PS)](https://www.helmholtz-hirse.de/).
123+
The project also received help from the [Joint Lab "Helmholtz Information - Research Software Engineering" (HiRSE)](https://www.helmholtz-hirse.de/).
122124

123125
<p align="center">
124126
<img src="./docs/img/EuroHPC.jpg" height="105"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

docs/source/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@
7070
# built documents.
7171
#
7272
# The short X.Y version.
73-
version = '5.5'
73+
version = '5.6'
7474
# The full version, including alpha/beta/rc tags.
75-
release = '5.5.2'
75+
release = '5.6'
7676

7777
# The language for content autogenerated by Sphinx. Refer to documentation
7878
# for a list of supported languages.

docs/source/index.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Tutorial
2525
tutorial/step_6.rst
2626
tutorial/step_7.rst
2727
tutorial/step_8.rst
28+
tutorial/step_9.rst
2829

2930
Playgrounds
3031
-----------
@@ -53,6 +54,7 @@ Projects
5354
projects/compression.rst
5455
projects/second_order.rst
5556
projects/monodomain.rst
57+
projects/GPU.rst
5658

5759

5860
API documentation

docs/source/projects/GPU.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.. include:: /../../pySDC/projects/GPU/README.rst

0 commit comments

Comments
 (0)