github mpi4py/mpi4py 2.0.0
on GitHub

  • Support for MPI-3 features.

    • Matched probes and receives.
    • Nonblocking collectives.
    • Neighborhood collectives.
    • New communicator constructors.
    • Request-based RMA operations.
    • New RMA communication and synchronisation calls.
    • New window constructors.
    • New datatype constructor.
    • New C++ boolean and floating complex datatypes.
  • Support for MPI-2 features not included in previous releases.

    • Generalized All-to-All collective (Comm.Alltoallw())
    • User-defined data representations (Register_datarep())
  • New scalable implementation of reduction operations for Python
    objects. This code is based on binomial tree algorithms using
    point-to-point communication and duplicated communicator
    contexts. To disable this feature, use
    mpi4py.rc.fast_reduce = False.

  • Backward-incompatible changes:

    • Python 2.4, 2.5, 3.0 and 3.1 are no longer supported.
    • Default MPI error handling policies are overriden. After import,
      mpi4py sets the ERRORS_RETURN error handler in COMM_SELF
      and COMM_WORLD, as well as any new Comm, Win, or
      File instance created through mpi4py, thus effectively
      ignoring the MPI rules about error handler inheritance. This way,
      MPI errors translate to Python exceptions. To disable this
      behavior and use the standard MPI error handling rules, use
      mpi4py.rc.errors = 'default'.
    • Change signature of all send methods,
      dest is a required argument.
    • Change signature of all receive and probe methods,
      source defaults to ANY_SOURCE,
      tag defaults to ANY_TAG.
    • Change signature of send lowercase-spelling methods,
      obj arguments are not mandatory.
    • Change signature of recv lowercase-spelling methods,
      renamed ‘obj’ arguments to ‘buf’.
    • Change Request.Waitsome() and Request.Testsome()
      to return None or list.
    • Change signature of all lowercase-spelling collectives,
      sendobj arguments are now mandatory,
      recvobj arguments were removed.
    • Reduction operations MAXLOC and MINLOC are no longer
      special-cased in lowercase-spelling methods Comm.[all]reduce()
      and Comm.[ex]scan(), the input object must be specified as a
      tuple (obj, location).
    • Change signature of name publishing functions.
      The new signatures are
      Publish_name(service_name, port_name, info=INFO_NULL) and
      Unpublish_name(service_name, port_name, info=INFO_NULL)`.
    • Win instances now cache Python objects exposing memory by
      keeping references instead of using MPI attribute caching.
    • Change signature of Win.Lock().
      The new signature is
      Win.Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0).
    • Move Cartcomm.Map() to Intracomm.Cart_map().
    • Move Graphcomm.Map() to Intracomm.Graph_map().
    • Remove the mpi4py.MPE module.
    • Rename the Cython definition file for use with cimport
      statement from mpi_c.pxd to libmpi.pxd.
15 days ago