Skip to content

Commit 9abb8e1

Browse files
authored
Docs cleanup after MPI merge (#600)
1 parent 75bf004 commit 9abb8e1

File tree

5 files changed

+59
-5
lines changed

5 files changed

+59
-5
lines changed

MPI/README.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# PyMPDATA-MPI
2+
PyMPDATA-MPI constitutes a [PyMPDATA](https://github.com/open-atmos/PyMPDATA) +
3+
[numba-mpi](https://github.com/numba-mpi/numba-mpi) coupler enabling numerical solutions
4+
of transport equations with the MPDATA numerical scheme in a
5+
hybrid parallelisation model with both multi-threading and MPI distributed memory communication.
6+
PyMPDATA-MPI adapts to API of PyMPDATA offering domain decomposition logic.
7+
8+
## Dependencies and installation
9+
10+
Along with ``PyMPDATA`` dependencies, this package also depends on ``numba-mpi`` and ``h5py``.
11+
12+
To install PyMPDATA-MPI, first we recommend installing MPI-compatible ``h5py`` and then downloading the package via pip:
13+
```
14+
HDF5_MPI="ON" pip install --no-binary=h5py h5py
15+
pip install PyMPDATA-MPI
16+
```
17+
18+
## Examples gallery
19+
20+
We strongly encourage to take a look at out examples gallery availible on [Github](https://open-atmos.github.io/PyMPDATA/PyMPDATA_MPI.html).
21+
22+
## Contributing, reporting issues, seeking support
23+
24+
Submitting new code to the project, please preferably use [GitHub pull requests](https://github.com/open-atmos/PyMPDATA/pulls) it helps to keep record of code authorship,
25+
track and archive the code review workflow and allows to benefit
26+
from the continuous integration setup which automates execution of tests
27+
with the newly added code.
28+
29+
## Design goals
30+
31+
- MPI support for [PyMPDATA](https://pypi.org/project/PyMPDATA/) implemented externally (i.e., not incurring any overhead or additional dependencies for PyMPDATA users)
32+
- MPI calls within [Numba njitted code](https://numba.pydata.org/numba-doc/dev/reference/jit-compilation.html) (hence not using [`mpi4py`](https://mpi4py.readthedocs.io/), but rather [`numba-mpi`](https://pypi.org/p/numba-mpi/))
33+
- hybrid domain-decomposition parallelism: threading (internal in PyMPDATA, in the inner dimension) + MPI (either inner or outer dimension)
34+
- example simulation scenarios featuring HDF5/MPI-IO output storage (using [h5py](https://www.h5py.org/))
35+
- [py-modelrunner](https://github.com/zwicker-group/py-modelrunner) simulation orchestration
36+
- portability across Linux & macOS (no Windows support as of now due to [challenges in getting HDF5/MPI-IO to work there](https://docs.h5py.org/en/stable/build.html#source-installation-on-windows))
37+
- Continuous Integration (CI) with different OSes and different MPI implementations (leveraging to mpi4py's [setup-mpi Github Action](https://github.com/mpi4py/setup-mpi/))
38+
- full test coverage including CI builds asserting on same results with multi-node vs. single-node computations (with help of [pytest-mpi](https://pypi.org/p/pytest-mpi/))
39+
- ships as a [pip-installable package](https://pypi.org/project/PyMPDATA-MPI) - aimed to be a dependency of domain-specific packages
40+
41+
## Credits & acknowledgments:
42+
43+
PyMPDATA-MPI started as a separate project for the [MSc thesis of Kacper Derlatka](https://www.ap.uj.edu.pl/diplomas/166883) ([@Delcior](https://github.com/Delcior)).
44+
Integration of PyMPDATA-MPI into PyMPDATA repo was carried out as a part of BEng project of [Michał Wroński](https://github.com/Sfonxu/).
45+
46+
Development of PyMPDATA-MPI has been supported by the [Poland's National Science Centre](https://www.ncn.gov.pl/?language=en)
47+
(grant no. 2020/39/D/ST10/01220).
48+
49+
We acknowledge Poland’s high-performance computing infrastructure [PLGrid](https://plgrid.pl/) (HPC Centers: [ACK Cyfronet AGH](https://www.cyfronet.pl/en/))
50+
for providing computer facilities and support within computational grant no. PLG/2023/016369
51+
52+
copyright: [Jagiellonian University](https://en.uj.edu.pl/en) & [AGH University of Krakow](https://agh.edu.pl/en)
53+
licence: [GPL v3](https://www.gnu.org/licenses/gpl-3.0.html)

MPI/docs/pympdata_mpi_landing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ Every node (process) is responsible for computing its part of the decomposed dom
1515
In spherical geometry, the $G$ factor represents the Jacobian of coordinate transformation.
1616
In this example (based on a test case from [Williamson & Rasch 1989](https://doi.org/10.1175/1520-0493(1989)117%3C0102:TDSLTW%3E2.0.CO;2)),
1717
domain decomposition is done cutting the sphere along meridians.
18-
The inner dimension uses the [`MPIPolar`](https://open-atmos.github.io/PyMPDATA-MPI/mpi_polar.html)
18+
The inner dimension uses the [`MPIPolar`](https://open-atmos.github.io/PyMPDATA/PyMPDATA_MPI/mpi_polar.html)
1919
boundary condition class, while the outer dimension uses
20-
[`MPIPeriodic`](https://open-atmos.github.io/PyMPDATA-MPI/mpi_periodic.html).
20+
[`MPIPeriodic`](https://open-atmos.github.io/PyMPDATA/PyMPDATA_MPI/mpi_periodic.html).
2121
Note that the spherical animations below depict simulations without MPDATA corrective iterations,
2222
i.e. only plain first-order upwind scheme is used (FIX ME).
2323

MPI/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ build-backend = "setuptools.build_meta"
1313
[project]
1414
name = "pympdata-mpi"
1515
description = "PyMPDATA + numba-mpi coupler sandbox"
16-
readme = "docs/pympdata_mpi_landing.md"
16+
readme = "README.md"
1717
requires-python = ">=3.10"
1818
keywords = ["MPI", "MPDATA", "Numba", "PyMPDATA"]
1919
license = {text = "GPL-3.0"}

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ see, e.g. [Smolarkiewicz and Margolin 1998](https://doi.org/10.1006/jcph.1998.59
3939

4040
PyMPDATA [documentation](https://open-atmos.github.io/PyMPDATA/index.html) is generated via [``pdoc``](https://pdoc.dev/).
4141

42-
A separate project called [``PyMPDATA-MPI``](https://github.com/open-atmos/PyMPDATA-MPI)
42+
43+
A [``PyMPDATA``] and [``numba-mpi``] coupler sandbox called [``PyMPDATA-MPI``](https://pypi.org/project/pympdata-mpi/)
4344
depicts how [``numba-mpi``](https://pypi.org/project/numba-mpi) can be used
4445
to enable distributed memory parallelism in PyMPDATA.applications, and provide a validation of the implementation
4546
and its performance.

docs/templates/index.html.jinja2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<h2>What is PyMPDATA?</h2>
3434
<p>
3535
<div style="float:right; width:25%">
36-
<img width="100%" src="https://github.com/open-atmos/PyMPDATA-MPI/releases/download/latest-generated-plots/n_iters.3_rank_0_size_1_c_field_.0.5.0.25._mpi_dim_0_n_threads_3-CartesianScenario-anim.gif">
36+
<img width="100%" src="https://github.com/open-atmos/PyMPDATA/releases/download/tip/n_iters.3_rank_0_size_1_c_field_.0.5.0.25._mpi_dim_0_n_threads_3-CartesianScenario-anim.gif">
3737
<br />
3838
<br />
3939
<img width="100%" src="https://github.com/open-atmos/PyMPDATA/releases/download/tip/boussinesq_2d_anim.gif">

0 commit comments

Comments
 (0)