numba-mpi 1.1.1__py3-none-any.whl → 1.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
numba_mpi/api/requests.py CHANGED
@@ -1,5 +1,5 @@
1
- """ Utilities for handling MPI_Requests with respective Wait and Test function
2
- wrappers.
1
+ """Utilities for handling MPI_Requests with respective Wait and Test function
2
+ wrappers.
3
3
  """
4
4
 
5
5
  import ctypes
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: numba-mpi
3
- Version: 1.1.1
3
+ Version: 1.1.3
4
4
  Summary: Numba @jittable MPI wrappers tested on Linux, macOS and Windows
5
5
  Home-page: https://github.com/numba-mpi/numba-mpi
6
6
  Author: https://github.com/numba-mpi/numba-mpi/graphs/contributors
@@ -16,8 +16,18 @@ Requires-Dist: numpy
16
16
  Requires-Dist: mpi4py
17
17
  Requires-Dist: psutil
18
18
  Provides-Extra: tests
19
- Requires-Dist: pytest <8.0.0 ; extra == 'tests'
20
- Requires-Dist: py-pde ; extra == 'tests'
19
+ Requires-Dist: pytest<8.0.0; extra == "tests"
20
+ Requires-Dist: py-pde; extra == "tests"
21
+ Dynamic: author
22
+ Dynamic: description
23
+ Dynamic: description-content-type
24
+ Dynamic: home-page
25
+ Dynamic: license
26
+ Dynamic: project-url
27
+ Dynamic: provides-extra
28
+ Dynamic: requires-dist
29
+ Dynamic: requires-python
30
+ Dynamic: summary
21
31
 
22
32
  # <img src="https://raw.githubusercontent.com/numba-mpi/numba-mpi/main/.github/numba_mpi_logo.png" width=128 height=142 alt="numba-mpi logo"> numba-mpi
23
33
 
@@ -35,31 +45,32 @@ Requires-Dist: py-pde ; extra == 'tests'
35
45
  [![DOI](https://zenodo.org/badge/316911228.svg)](https://zenodo.org/badge/latestdoi/316911228)
36
46
 
37
47
  ### Overview
38
- numba-mpi provides Python wrappers to the C MPI API callable from within [Numba JIT-compiled code](https://numba.readthedocs.io/en/stable/user/jit.html) (@jit mode). For an outline of the project, rationale, architecture, and features, refer to: [numba-mpi arXiv e-print](https://doi.org/10.48550/arXiv.2407.13712) (please cite if numba-mpi is used in your research).
48
+ numba-mpi provides Python wrappers to the C MPI API callable from within [Numba JIT-compiled code](https://numba.readthedocs.io/en/stable/user/jit.html) (@jit mode). For an outline of the project, rationale, architecture, and features, refer to: [numba-mpi paper in SoftwareX (open access)](https://www.sciencedirect.com/science/article/pii/S235271102400267X) (please cite if numba-mpi is used in your research).
39
49
 
40
50
  Support is provided for a subset of MPI routines covering: `size`/`rank`, `send`/`recv`, `allreduce`, `reduce`, `bcast`, `scatter`/`gather` & `allgather`, `barrier`, `wtime`
41
51
  and basic asynchronous communication with `isend`/`irecv` (only for contiguous arrays); for request handling including `wait`/`waitall`/`waitany` and `test`/`testall`/`testany`.
42
52
 
43
- The API uses NumPy and supports both numeric and character datatypes (e.g., `broadcast`).
53
+ The API uses NumPy and supports both numeric and character datatypes (e.g., `broadcast`).
44
54
  Auto-generated docstring-based API docs are published on the web: https://numba-mpi.github.io/numba-mpi
45
55
 
46
- Packages can be obtained from
47
- [PyPI](https://pypi.org/project/numba-mpi),
48
- [Conda Forge](https://anaconda.org/conda-forge/numba-mpi),
56
+ Packages can be obtained from
57
+ [PyPI](https://pypi.org/project/numba-mpi),
58
+ [Conda Forge](https://anaconda.org/conda-forge/numba-mpi),
49
59
  [Arch Linux](https://aur.archlinux.org/packages/python-numba-mpi)
50
60
  or by invoking `pip install git+https://github.com/numba-mpi/numba-mpi.git`.
51
61
 
52
62
  numba-mpi is a pure-Python package.
53
63
  The codebase includes a test suite used through the GitHub Actions workflows ([thanks to mpi4py's setup-mpi](https://github.com/mpi4py/setup-mpi)!)
54
- for automated testing on: Linux ([MPICH](https://www.mpich.org/), [OpenMPI](https://www.open-mpi.org/doc/)
55
- & [Intel MPI](https://www.intel.com/content/www/us/en/developer/tools/oneapi/mpi-library.html)),
56
- macOS ([MPICH](https://www.mpich.org/) & [OpenMPI](https://www.open-mpi.org/doc/)) and
57
- Windows ([MS MPI](https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi)).
64
+ for automated testing on: Linux ([MPICH](https://www.mpich.org/), [OpenMPI](https://www.open-mpi.org/doc/)
65
+ & [Intel MPI](https://www.intel.com/content/www/us/en/developer/tools/oneapi/mpi-library.html)),
66
+ macOS ([MPICH](https://www.mpich.org/) & [OpenMPI](https://www.open-mpi.org/doc/)) and
67
+ Windows ([MS MPI](https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi)). Note, that some of those
68
+ combinations may not be fully supported yet - see [Known Issues](#known-issues) for more information.
58
69
 
59
70
  Features that are not implemented yet include (help welcome!):
60
71
  - support for non-default communicators
61
72
  - support for `MPI_IN_PLACE` in `[all]gather`/`scatter` and `allreduce`
62
- - support for `MPI_Type_create_struct` (Numpy structured arrays)
73
+ - support for `MPI_Type_create_struct` (Numpy structured arrays)
63
74
  - ...
64
75
 
65
76
  ### Hello world send/recv example:
@@ -82,21 +93,21 @@ hello()
82
93
  ### Example comparing numba-mpi vs. mpi4py performance:
83
94
 
84
95
  The example below compares `Numba`+`mpi4py` vs. `Numba`+`numba-mpi` performance.
85
- The sample code estimates $\pi$ by numerical integration of $\int_0^1 (4/(1+x^2))dx=\pi$
86
- dividing the workload into `n_intervals` handled by separate MPI processes
96
+ The sample code estimates $\pi$ by numerical integration of $\int_0^1 (4/(1+x^2))dx=\pi$
97
+ dividing the workload into `n_intervals` handled by separate MPI processes
87
98
  and then obtaining a sum using `allreduce` (see, e.g., analogous [Matlab docs example](https://www.mathworks.com/help/parallel-computing/numerical-estimation-of-pi-using-message-passing.html)).
88
99
  The computation is carried out in a JIT-compiled function `get_pi_part()` and is repeated
89
- `N_TIMES`. The repetitions and the MPI-handled reduction are done outside or
100
+ `N_TIMES`. The repetitions and the MPI-handled reduction are done outside or
90
101
  inside of the JIT-compiled block for `mpi4py` and `numba-mpi`, respectively.
91
102
  Timing is repeated `N_REPEAT` times and the minimum time is reported.
92
103
  The generated plot shown below depicts the speedup obtained by replacing `mpi4py`
93
- with `numba_mpi`, plotted as a function of `N_TIMES / n_intervals` - the number of MPI calls per
104
+ with `numba_mpi`, plotted as a function of `N_TIMES / n_intervals` - the number of MPI calls per
94
105
  interval. The speedup, which stems from avoiding roundtrips between JIT-compiled
95
106
  and Python code is significant (150%-300%) in all cases. The more often communication
96
- is needed (smaller `n_intervals`), the larger the measured speedup. Note that nothing
107
+ is needed (smaller `n_intervals`), the larger the measured speedup. Note that nothing
97
108
  in the actual number crunching (within the `get_pi_part()` function) or in the employed communication logic
98
109
  (handled by the same MPI library) differs between the `mpi4py` or `numba-mpi` solutions.
99
- These are the overhead of `mpi4py` higher-level abstractions and the overhead of
110
+ These are the overhead of `mpi4py` higher-level abstractions and the overhead of
100
111
  repeatedly entering and leaving the JIT-compiled block if using `mpi4py`, which can be
101
112
  eliminated by using `numba-mpi`, and which the measured differences in execution time
102
113
  stem from.
@@ -156,6 +167,14 @@ if numba_mpi.rank() == 0:
156
167
 
157
168
  ![plot](https://github.com/numba-mpi/numba-mpi/releases/download/tip/readme_plot.png)
158
169
 
170
+ ### Known Issues
171
+
172
+ **NOTE**: Issues listed below only relate to combinations of platforms and MPI distributions that we target to support, but due to various reason are currently not working and are temporarily excluded from automated testing:
173
+
174
+ - tests on Ubuntu 2024.4 that use MPICH are not run due to failures caused by newer version of MPICH (`4.2.0`); note, that previous tests ran
175
+ using version `4.0.2` of MPICH (that is installed by default on Ubuntu 2022.4 using `apt`) were passing (see [related issue](https://github.com/numba-mpi/numba-mpi/issues/162) - TODO #162),
176
+ - tests on Intel MacOS (v13) that use OpenMPI are currently not run due to failures being under investigation (see [related issue](https://github.com/numba-mpi/numba-mpi/issues/163) - TODO #163),
177
+ - `numba-mpi` currently does not support ARM-based MacOS, due to required code improvement (see [related issue](https://github.com/numba-mpi/numba-mpi/issues/164) - TODO #164).
159
178
 
160
179
  ### MPI resources on the web:
161
180
 
@@ -177,11 +196,10 @@ if numba_mpi.rank() == 0:
177
196
 
178
197
  ### Acknowledgements:
179
198
 
180
- We thank [all contributors](https://github.com/numba-mpi/numba-mpi/graphs/contributors) and users who reported feedback to the project
199
+ We thank [all contributors](https://github.com/numba-mpi/numba-mpi/graphs/contributors) and users who reported feedback to the project
181
200
  through [GitHub issues](https://github.com/numba-mpi/numba-mpi/issues).
182
201
 
183
202
  Development of numba-mpi has been supported by the [Polish National Science Centre](https://ncn.gov.pl/en) (grant no. 2020/39/D/ST10/01220),
184
- the [Max Planck Society](https://www.mpg.de/en) and the [European Union](https://erc.europa.eu/) (ERC, EmulSim, 101044662).
185
- We further acknowledge Poland’s high-performance computing infrastructure [PLGrid](https://plgrid.pl) (HPC Centers: [ACK Cyfronet AGH](https://www.cyfronet.pl/en))
203
+ the [Max Planck Society](https://www.mpg.de/en) and the [European Union](https://erc.europa.eu/) (ERC, EmulSim, 101044662).
204
+ We further acknowledge Poland’s high-performance computing infrastructure [PLGrid](https://plgrid.pl) (HPC Centers: [ACK Cyfronet AGH](https://www.cyfronet.pl/en))
186
205
  for providing computer facilities and support within computational grant no. PLG/2023/016369.
187
-
@@ -12,13 +12,13 @@ numba_mpi/api/operator.py,sha256=3VTPZAdOP05bxdqt3lA0hRDICM-iaBMa4m-krEdO91s,342
12
12
  numba_mpi/api/rank.py,sha256=1xZvHUclsK20aMtK07JzXYxW5F4Er8HZgOmcf495sjo,597
13
13
  numba_mpi/api/recv.py,sha256=YsYK-q7PNfi3zt0ftVddM363VsnJ4XFfmgMq8aeCr-o,1260
14
14
  numba_mpi/api/reduce.py,sha256=ug8WctzXRuxD3IrvrXN4sAfWdjJ1vvMhwykTgF8nn1s,3233
15
- numba_mpi/api/requests.py,sha256=5EhgFyeQCGP8YclSPwxP95c2AhBo19CLlShK0TxCR2U,9114
15
+ numba_mpi/api/requests.py,sha256=-9KstEnuP4i7udDMXojKt-xaoEgl5Xk4D_7vo93AGQY,9109
16
16
  numba_mpi/api/scatter_gather.py,sha256=goZn4BxMKakWQHjfXIOdjzK3DJ-lTeaiQQwgnyQeZ_s,2410
17
17
  numba_mpi/api/send.py,sha256=jn1hPw0YHBHOaeJop_ZbjaBChaqgfw3nM1xGhW9sabI,909
18
18
  numba_mpi/api/size.py,sha256=-RX-FtcIH4qDxCoGOhZjjgEWXpytt79vsH0YX9dtZuY,597
19
19
  numba_mpi/api/wtime.py,sha256=qrTqlefW7K7hqnAQKkGYm8kgdiRGuSAGiHmPcTrhLzE,279
20
- numba_mpi-1.1.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
- numba_mpi-1.1.1.dist-info/METADATA,sha256=a9ZEpxFg6RO9FMIz7vUdn52cQYcK6hiuLMVf-2sYIA0,9897
22
- numba_mpi-1.1.1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
23
- numba_mpi-1.1.1.dist-info/top_level.txt,sha256=yb_ktLmrfuhOZS0rjS81FFNC-gK_4c19WbLG2ViP73g,10
24
- numba_mpi-1.1.1.dist-info/RECORD,,
20
+ numba_mpi-1.1.3.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
+ numba_mpi-1.1.3.dist-info/METADATA,sha256=cBFNRsbMKWsQVU0TA3q9VNGBQlxzCmTzHjP4W5Mo_TU,11215
22
+ numba_mpi-1.1.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
23
+ numba_mpi-1.1.3.dist-info/top_level.txt,sha256=yb_ktLmrfuhOZS0rjS81FFNC-gK_4c19WbLG2ViP73g,10
24
+ numba_mpi-1.1.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5