Enabling MPI communication within Numba/LLVM JIT-compiled Python code using numba-mpi v1.0
Kacper Derlatka, Maciej Manna, Oleksii Bulenok, David Zwicker,, Sylwester Arabas

TL;DR
The paper introduces numba-mpi, a Python package enabling MPI communication within JIT-compiled code using Numba, allowing high-performance parallel computing directly in Python without leaving JIT blocks.
Contribution
It presents a new Python package that integrates MPI routines into Numba JIT-compiled code, expanding parallel computing capabilities in Python with performance benefits.
Findings
Supports key MPI routines with unit tests
Enables MPI communication within JIT-compiled Python code
Demonstrates performance advantages over mpi4py
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 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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
