MPI for Python — MPI for Python 3.1.4 documentation

# MPI for Python

Author:

  Lisandro Dalcin

Contact:

  dalcinl@gmail.com

Date:

  Nov 02, 2022

Abstract

This document describes the MPI for Python package. MPI for Python provides Python bindings for the Message Passing Interface (MPI) standard, allowing Python applications to exploit multiple processors on workstations, clusters and supercomputers.

This package builds on the MPI specification and provides an object oriented interface resembling the MPI-2 C++ bindings. It supports point-to-point (sends, receives) and collective (broadcasts, scatters, gathers) communication of any picklable Python object, as well as efficient communication of Python objects exposing the Python buffer interface (e.g. NumPy arrays and builtin bytes/array/memoryview objects).

Contents

- Introduction
  - What is MPI?
  - What is Python?
  - Related Projects
- Overview
  - Communicating Python Objects and Array Data
  - Communicators
  - Point-to-Point Communications
  - Collective Communications
  - Support for GPU-aware MPI
  - Dynamic Process Management
  - One-Sided Communications
  - Parallel Input/Output
  - Environmental Management
- Tutorial
  - Running Python scripts with MPI
  - Point-to-Point Communication
  - Collective Communication
  - MPI-IO
  - Dynamic Process Management
  - CUDA-aware MPI + Python GPU arrays
  - One-Sided Communications
  - Wrapping with SWIG
  - Wrapping with F2Py
- mpi4py
  - Runtime configuration options
  - Environment variables
  - Miscellaneous functions
- mpi4py.MPI
  - Classes
  - Functions
  - Attributes
- mpi4py.futures
  - concurrent.futures
  - MPIPoolExecutor
  - MPICommExecutor
  - Command line
  - Examples
- mpi4py.util
  - mpi4py.util.pkl5
  - mpi4py.util.dtlib
- mpi4py.run
  - Interface options
- Reference
  - mpi4py.MPI
- Citation
- Installation
  - Requirements
  - Using pip
  - Using distutils
  - Testing
- Appendix
  - MPI-enabled Python interpreter
  - Building MPI from sources

- Index