Back to Search
Start Over
Numba-MPI v1.0: Enabling MPI communication within Numba/LLVM JIT-compiled Python code
- Source :
- SoftwareX, Vol 28, Iss , Pp 101897- (2024)
- Publication Year :
- 2024
- Publisher :
- Elsevier, 2024.
-
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.
- Subjects :
- Python
MPI
Numba
JIT
Multi-threading
LLVM
Computer software
QA76.75-76.765
Subjects
Details
- Language :
- English
- ISSN :
- 23527110
- Volume :
- 28
- Issue :
- 101897-
- Database :
- Directory of Open Access Journals
- Journal :
- SoftwareX
- Publication Type :
- Academic Journal
- Accession number :
- edsdoj.83f9fa3644e34ef68bb7591305d16ee3
- Document Type :
- article
- Full Text :
- https://doi.org/10.1016/j.softx.2024.101897