# Numba-mpi v1.0 (and a SoftwareX paper out)

**URL:** <https://numba.discourse.group/t/numba-mpi-v1-0-and-a-softwarex-paper-out/2760>\
**Category:** Showcase\
**Created:** [October 12, 2024, 8:43pm UTC](https://numba.discourse.group/t/numba-mpi-v1-0-and-a-softwarex-paper-out/2760 "2024-10-12T20:43:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![slayoo](https://yyz2.discourse-cdn.com/free1/user_avatar/numba.discourse.group/slayoo/32/403_2.png) [@slayoo](https://numba.discourse.group/u/slayoo)\
**Post date:** [October 12, 2024, 8:43pm UTC](https://numba.discourse.group/t/numba-mpi-v1-0-and-a-softwarex-paper-out/2760/1 "2024-10-12T20:43:27Z")

</div>

Dear Numba Community,

Happy to announce that we have accompanied the v1.0 release of Numba-MPI package with a journal paper in SoftwareX (open access): [https://www.softxjournal.com/action/showPdf?pii=S2352-7110(24)00267-X](https://www.softxjournal.com/action/showPdf?pii=S2352-7110%2824%2900267-X) (DOI:10.1016/j.softx.2024.101897, Derlatka et al. 2024)

Quoting the abstract: The numba-mpi package offers access to the Message Passing Interface (MPI) routines from Python code that uses the Numba just-in-time (JIT) compiler. As a result, high-performance and multi-threaded Python code may utilize MPI communication facilities without leaving the JIT-compiled code blocks, which is not possible with the mpi4py package, a higher-level Python interface to MPI. For debugging or code-coverage analysis purposes, numba-mpi retains full functionality of the code even if the JIT compilation is disabled. The numba-mpi API constitutes a thin wrapper around the C API of MPI and is built around Numpy arrays including handling of non-contiguous views over array slices. Project development is hosted at GitHub leveraging the mpi4py/setup-mpi workflow enabling continuous integration tests on Linux (MPICH, OpenMPI & Intel MPI), macOS (MPICH & OpenMPI) and Windows (MS MPI). The paper covers an overview of the package features, architecture and performance. As of v1.0, the following MPI routines are exposed and covered by unit tests: size/rank, [i]send/[i]recv, wait[all|any], test[all|any], allreduce, bcast, barrier, scatter/[all]gather & wtime. The package is implemented in pure Python and depends on numpy, numba and mpi4py (the latter used at initialization and as a source of utility routines only). The performance advantage of using numba-mpi compared to mpi4py is depicted with a simple example, with entirety of the code included in listings discussed in the text. Application of numba-mpi for handling domain decomposition in numerical solvers for partial differential equations is presented using two external packages that depend on numba-mpi: py-pde and PyMPDATA-MPI.

PyPI: [numba-mpi · PyPI](https://pypi.org/p/numba-mpi)  
GH: [numba-mpi · GitHub](https://github.com/numba-mpi)  
Conda: [Numba Mpi | Anaconda.org](https://anaconda.org/conda-forge/numba-mpi)  
AUR: [AUR (en) - python-numba-mpi](https://aur.archlinux.org/packages/python-numba-mpi)

Feedback very welcome,  
Best,  
Sylwester & the numba-mpi team ([Contributors to numba-mpi/numba-mpi · GitHub](https://github.com/numba-mpi/numba-mpi/graphs/contributors))
