|
| 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) |
0 commit comments