Skip to content

Releases: mpi4py/mpi4py

4.1.2

Choose a tag to compare

@dalcinl dalcinl released this 16 May 09:26
1c40e59
  • Fix build issues from breaking changes in setuptools 81.

  • Support Windows builds with Meson and Intel MPI.

  • PyPy wheels are no longer published.

Full Changelog: 4.1.1...4.1.2

4.1.1

Choose a tag to compare

@dalcinl dalcinl released this 10 Oct 12:27
5e2fbc6
  • Add MPIABI-aware import hook support.

  • Support MPI.ERR_ERRHANDLER with Open MPI.

  • Fix Windows build issues with Intel MPI 2021.16.

  • Minor fixes and improvements to typing stubs.

  • Minor fixes to documentation.

  • Publish Python 3.8-3.14 and PyPy 3.11 wheels.

  • PyPy 3.10 (EOL) wheels are no longer published.

4.1.0

Choose a tag to compare

@dalcinl dalcinl released this 25 Jun 08:45
4.1.0
23bbd37
  • New features:

    • Publish binary wheel packages on PyPI with support for multiple operating systems (Linux, macOS, Windows), processor architectures (AMD64, ARM64), MPI implementations (MPICH, Open MPI, and their ABI-compatible derivatives), and Python implementations (CPython, PyPy).
    • Add support for the MPI 5.0 standard.
      • MPI handle serialization with integral values.
      • Fixed-size Fortran LOGICAL datatypes.
      • Query ABI version/info and Fortran ABI info.
    • MPI.Datatype.Create_contiguous now uses BigMPI's approach when using MPI implementations that do not yet support the MPI 4.0 large-count APIs.
    • Add support for MPI.FLOAT16_T and MPI.BFLOAT16_T datatypes. These datatypes are not yet standard but available as extensions in MPI implementations.
    • Add MPI.Status.tomemory to expose the status contents as a memoryview object.
  • Enhancements:

    • Support (opt-in via MPI4PY_BUILD_PYSABI) for building with Py_LIMITED_API under Python 3.10+ (requires Cython 3.1+).
    • Support (opt-in via MPI4PY_BUILD_MPIABI) for building with the MPI 5.0 standard ABI and the MPICH or Open MPI legacy ABIs. The MPI extension module will be able to dynamically link at runtime with older versions (down to the MPI 3.0 standard) of the MPI implementation used at compile time. Only available on Linux, macOS, and Windows.
    • Support a buffersize parameter in the MPIPoolExecutor.map() and MPIPoolExecutor.starmap() methods to limit the number of pending tasks.
    • Improve ownership management of DLPack capsules.
    • Reimplement MPI DLL search path on Windows.
    • Minor fixes to typing stubs and documentation.
  • Backward-incompatible changes:

    • Python 3.8+ is required.
    • The MPI.Exception class is now a heap type.
    • The types of the MPI.BOTTOM, MPI.IN_PLACE, and MPI.BUFFER_AUTOMATIC are no longer subclasses of int.

4.0.3

Choose a tag to compare

@dalcinl dalcinl released this 13 Feb 16:17
36d89a3
  • Fix DLPack v1.0 support.

4.0.2

Choose a tag to compare

@dalcinl dalcinl released this 01 Feb 14:09
c4d0027
  • Support MPI-4 features within Intel MPI 2021.14.

  • Various fixes and updates to tests.

  • Minor fixes to typing support.

  • Minor fix to documentation.

4.0.1

Choose a tag to compare

@dalcinl dalcinl released this 11 Oct 10:48
e098243
  • Update support for Python 3.13:

    • Enable Cython 3.1 support for free-threaded CPython.
    • Allow compiling Cython-generated C sources with the full Python C-API.
    • Fix MPI DLL path workarounds on Windows after changes to locals().
  • Enhancements to test suite:

    • Support XML reports via unittest-xml-reporting.
    • Add command line options to exclude tests by patterns and files.
    • Refactor Python 2 code to use Python 3 constructs using pyupgrade.
  • Miscellaneous:

    • Minor and mostly inconsequential subclass fix in mpi4py.util.pkl5.
    • Update compatibility workarounds for legacy MPICH 3.0 release.

4.0.0

Choose a tag to compare

@dalcinl dalcinl released this 28 Jul 09:28
4.0.0
c617118
  • New features:

    • Add support for the MPI-4.0 standard.

      • Use large count MPI-4 routines.
      • Add persistent collective communication.
      • Add partitioned point-to-point communication.
      • Add new communicator constructors.
      • Add the Session class and its methods.
    • Add support for the MPI-4.1 standard.

      • Add non-destructive completion test for multiple requests.
      • Add value-index datatype constructor.
      • Add communicator/session buffer attach/detach/flush.
      • Support for removal of error classes/codes/strings.
      • Support for querying hardware resource information.
    • Add preliminary support for the upcoming MPI-5.0 standard.

      • User-level failure mitigation (ULFM).
    • mpi4py.util.pool: New drop-in replacement for multiprocessing.pool.

    • mpi4py.util.sync: New synchronization utilities.

    • Add runtime check for mismatch between mpiexec and MPI library.

    • Support scikit-build-core as an alternative build backend.

    • Support meson-python as an alternative build backend.

  • Enhancements:

    • mpi4py.futures: Support for parallel tasks.

    • mpi4py.futures: Report exception tracebacks in workers.

    • mpi4py.util.pkl5: Add support for collective communication.

    • Add methods Datatype.fromcode(), Datatype.tocode() and
      attributes Datatype.typestr, Datatype.typechar to simplify
      NumPy interoperability for simple cases.

    • Add methods Comm.Create_errhandler(), Win.Create_errhandler(),
      and File.Create_errhandler() to create custom error handlers.

    • Add support for pickle serialization of instances of MPI types.
      All instances of Datatype, Info, and Status can be
      serialized. Instances of Op can be serialized only if created
      through mpi4py by calling Op.Create(). Instances of other MPI
      types can be serialized only if they reference predefined handles.

    • Add handle attribute and fromhandle() class method to MPI
      classes to ease interoperability with external code. The handle
      value is an unsigned integer guaranteed to fit on the platform's
      uintptr_t C type.

    • Add lowercase free() method to MPI classes to ease MPI object
      deallocation and cleanup. This method eventually attempts to call
      Free(), but only if the object's MPI handle is not a null or
      predefined handle, and such call is allowed within the World Model
      init/finalize.

  • Backward-incompatible changes:

    • Python 2 is no longer supported, Python 3.6+ is required, but
      typing stubs are supported for Python 3.8+.

    • The Intracomm.Create_group() method is no longer defined in the
      base Comm class.

    • Group.Compare() and Comm.Compare() are no longer class methods
      but instance methods. Existing codes using the former class
      methods are expected to continue working.

    • Group.Translate_ranks() is no longer a class method but an
      instance method. Existing codes using the former class method are
      expected to continue working.

    • The LB and UB datatypes are no longer available, use
      Datatype.Create_resized() instead.

    • The HOST predefined attribute key is no longer available.

    • The MPI.memory class has been renamed to MPI.buffer. The old
      name is still available as an alias to the new name.

    • The mpi4py.dl module is no longer available.

    • The mpi4py.get_config function returns an empty dictionary.

  • Miscellaneous:

    • The project is now licensed under the BSD-3-Clause license. This
      change is fairly inconsequential for users and distributors. It
      simply adds an additional clause against using contributor names
      for promotional purposes without their consent.

    • Add a new guidelines section to documentation laying out new fair
      play rules. These rules ask companies and outside developers to
      refrain from reusing the mpi4py name in unaffiliated projects,
      publishing binary mpi4py wheels on the main Python Package Index
      (PyPI), and distributing modified versions with incompatible or
      extended API changes. The primary motivation of these rules is to
      avoid fragmentation and end-user confusion.

3.1.6

Choose a tag to compare

@dalcinl dalcinl released this 14 Apr 10:39

WARNING: This is the last release supporting Python 2.

  • Fix various build issues.

3.1.5

Choose a tag to compare

@dalcinl dalcinl released this 04 Oct 09:04

WARNING: This is the last release supporting Python 2.

  • Rebuild C sources with Cython 0.29.36 to support Python 3.12.

3.1.4

Choose a tag to compare

@dalcinl dalcinl released this 02 Nov 14:19

WARNING: This is the last release supporting Python 2.

  • Rebuild C sources with Cython 0.29.32 to support Python 3.11.

  • Fix contiguity check for DLPack and CAI buffers.

  • Workaround build failures with setuptools v60.