mpi4py-mpich


Namempi4py-mpich JSON
Version 3.1.5 PyPI version JSON
download
home_pagehttps://github.com/mpi4py/mpi4py/
SummaryPython bindings for MPI (includes MPICH binaries)
upload_time2024-02-03 17:47:16
maintainerLisandro Dalcin
docs_urlNone
authorLisandro Dalcin
requires_python>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
licenseBSD
keywords scientific computing parallel computing message passing interface mpi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            MPI for Python
==============

This package provides Python bindings for the *Message Passing
Interface* (MPI_) standard. It is implemented on top of the MPI
specification and exposes an API which grounds on the standard MPI-2
C++ bindings.

NOTE: This package includes MPICH binaries (an implementation of MPI) and does
not require installing MPI before mpi4py. The MPI launcher (mpiexec) is also
included and you can directly invoke it after installing this package. If
Python's bin folder is not in your PATH, you can also launch with `python -m mpiexec ...`

.. _MPI: https://www.mpi-forum.org

Features
--------

This package supports:

* Convenient communication of any *picklable* Python object

  + point-to-point (send & receive)
  + collective (broadcast, scatter & gather, reductions)

* Fast communication of Python object exposing the *Python buffer
  interface* (NumPy arrays, builtin bytes/string/array objects)

  + point-to-point (blocking/nonbloking/persistent send & receive)
  + collective (broadcast, block/vector scatter & gather, reductions)

* Process groups and communication domains

  + Creation of new intra/inter communicators
  + Cartesian & graph topologies

* Parallel input/output:

  + read & write
  + blocking/nonbloking & collective/noncollective
  + individual/shared file pointers & explicit offset

* Dynamic process management

  + spawn & spawn multiple
  + accept/connect
  + name publishing & lookup

* One-sided operations

  + remote memory access (put, get, accumulate)
  + passive target syncronization (start/complete & post/wait)
  + active target syncronization (lock & unlock)


Install
-------

You can install mpi4py from its source distribution using ``pip``::

  $ python -m pip install mpi4py

You can also install the in-development version with::

  $ python -m pip install git+https://github.com/mpi4py/mpi4py

or::

  $ python -m pip install https://github.com/mpi4py/mpi4py/tarball/master

Installing from source requires compilers and a working MPI
implementation. The ``mpicc`` compiler wrapper is looked for on the
executable search path (``PATH`` environment variable). Alternatively,
you can set the ``MPICC`` environment variable to the full path or
command corresponding to the MPI-aware C compiler.

The **conda-forge** community provides ready-to-use binary packages
from an ever growing collection of software libraries built around the
multi-platform *conda* package manager. Three MPI implementations are
available on conda-forge: Open MPI (Linux and macOS), MPICH (Linux and
macOS), and Microsoft MPI (Windows). You can install mpi4py and your
preferred MPI implementation using ``conda``::

* to use MPICH do::

  $ conda install -c conda-forge mpi4py mpich

* to use Open MPI do::

  $ conda install -c conda-forge mpi4py openmpi

* to use Microsoft MPI do::

  $ conda install -c conda-forge mpi4py msmpi

MPICH and many of its derivatives are ABI-compatible. You can provide
the package specification ``mpich=X.Y.*=external_*`` (where ``X`` and
``Y`` are the major and minor version numbers) to request the conda
package manager to use system-provided MPICH (or derivative)
libraries.

The ``openmpi`` package on conda-forge has built-in CUDA support, but
it is disabled by default. To enable it, follow the instruction
outlined during ``conda install``. Additionally, UCX support is also
available once the ``ucx`` package is installed.

On **Fedora Linux** systems (as well as **RHEL** and their derivatives
using the EPEL software repository), you can install binary packages
with the system package manager::

* using ``dnf`` and the ``mpich`` package::

  $ sudo dnf install python3-mpi4py-mpich

* using ``dnf`` and the ``openmpi`` package::

  $ sudo dnf install python3-mpi4py-openmpi

Please remember to load the correct MPI module for your chosen MPI
implementation

* for the ``mpich`` package do::

  $ module load mpi/mpich-$(arch)
  $ python -c "from mpi4py import MPI"

* for the ``openmpi`` package do::

  $ module load mpi/openmpi-$(arch)
  $ python -c "from mpi4py import MPI"

On **Ubuntu Linux** and **Debian Linux** systems, binary packages are
available for installation using the system package manager::

  $ sudo apt install python3-mpi4py

Note that on Ubuntu/Debian systems, the mpi4py package uses Open
MPI. To use MPICH, install the ``libmpich-dev`` and ``python3-dev``
packages (and any other required development tools). Afterwards,
install mpi4py from sources using ``pip``.

**macOS** users can install mpi4py using the Homebrew package
manager::

  $ brew install mpi4py

Note that the Homebrew mpi4py package uses Open MPI. Alternatively,
install the ``mpich`` package and next install mpi4py from sources
using ``pip``.

**Windows** users can install mpi4py from binary wheels hosted on the
Python Package Index (PyPI) using ``pip``::

  $ python -m pip install mpi4py

Windows wheels require a separate, system-wide installation of the
Microsoft MPI runtime.


Citations
---------

If MPI for Python been significant to a project that leads to an
academic publication, please acknowledge that fact by citing the
project.

* L. Dalcin and Y.-L. L. Fang,
  *mpi4py: Status Update After 12 Years of Development*,
  Computing in Science & Engineering, 23(4):47-54, 2021.
  https://doi.org/10.1109/MCSE.2021.3083216

* L. Dalcin, P. Kler, R. Paz, and A. Cosimo,
  *Parallel Distributed Computing using Python*,
  Advances in Water Resources, 34(9):1124-1139, 2011.
  https://doi.org/10.1016/j.advwatres.2011.04.013

* L. Dalcin, R. Paz, M. Storti, and J. D'Elia,
  *MPI for Python: performance improvements and MPI-2 extensions*,
  Journal of Parallel and Distributed Computing, 68(5):655-662, 2008.
  https://doi.org/10.1016/j.jpdc.2007.09.005

* L. Dalcin, R. Paz, and M. Storti,
  *MPI for Python*,
  Journal of Parallel and Distributed Computing, 65(9):1108-1115, 2005.
  https://doi.org/10.1016/j.jpdc.2005.03.010

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mpi4py/mpi4py/",
    "name": "mpi4py-mpich",
    "maintainer": "Lisandro Dalcin",
    "docs_url": null,
    "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
    "maintainer_email": "dalcinl@gmail.com",
    "keywords": "scientific computing,parallel computing,message passing interface,MPI",
    "author": "Lisandro Dalcin",
    "author_email": "dalcinl@gmail.com",
    "download_url": "https://github.com/mpi4py/mpi4py/releases/download/3.1.5/mpi4py-3.1.5.tar.gz",
    "platform": "POSIX",
    "description": "MPI for Python\n==============\n\nThis package provides Python bindings for the *Message Passing\nInterface* (MPI_) standard. It is implemented on top of the MPI\nspecification and exposes an API which grounds on the standard MPI-2\nC++ bindings.\n\nNOTE: This package includes MPICH binaries (an implementation of MPI) and does\nnot require installing MPI before mpi4py. The MPI launcher (mpiexec) is also\nincluded and you can directly invoke it after installing this package. If\nPython's bin folder is not in your PATH, you can also launch with `python -m mpiexec ...`\n\n.. _MPI: https://www.mpi-forum.org\n\nFeatures\n--------\n\nThis package supports:\n\n* Convenient communication of any *picklable* Python object\n\n  + point-to-point (send & receive)\n  + collective (broadcast, scatter & gather, reductions)\n\n* Fast communication of Python object exposing the *Python buffer\n  interface* (NumPy arrays, builtin bytes/string/array objects)\n\n  + point-to-point (blocking/nonbloking/persistent send & receive)\n  + collective (broadcast, block/vector scatter & gather, reductions)\n\n* Process groups and communication domains\n\n  + Creation of new intra/inter communicators\n  + Cartesian & graph topologies\n\n* Parallel input/output:\n\n  + read & write\n  + blocking/nonbloking & collective/noncollective\n  + individual/shared file pointers & explicit offset\n\n* Dynamic process management\n\n  + spawn & spawn multiple\n  + accept/connect\n  + name publishing & lookup\n\n* One-sided operations\n\n  + remote memory access (put, get, accumulate)\n  + passive target syncronization (start/complete & post/wait)\n  + active target syncronization (lock & unlock)\n\n\nInstall\n-------\n\nYou can install mpi4py from its source distribution using ``pip``::\n\n  $ python -m pip install mpi4py\n\nYou can also install the in-development version with::\n\n  $ python -m pip install git+https://github.com/mpi4py/mpi4py\n\nor::\n\n  $ python -m pip install https://github.com/mpi4py/mpi4py/tarball/master\n\nInstalling from source requires compilers and a working MPI\nimplementation. The ``mpicc`` compiler wrapper is looked for on the\nexecutable search path (``PATH`` environment variable). Alternatively,\nyou can set the ``MPICC`` environment variable to the full path or\ncommand corresponding to the MPI-aware C compiler.\n\nThe **conda-forge** community provides ready-to-use binary packages\nfrom an ever growing collection of software libraries built around the\nmulti-platform *conda* package manager. Three MPI implementations are\navailable on conda-forge: Open MPI (Linux and macOS), MPICH (Linux and\nmacOS), and Microsoft MPI (Windows). You can install mpi4py and your\npreferred MPI implementation using ``conda``::\n\n* to use MPICH do::\n\n  $ conda install -c conda-forge mpi4py mpich\n\n* to use Open MPI do::\n\n  $ conda install -c conda-forge mpi4py openmpi\n\n* to use Microsoft MPI do::\n\n  $ conda install -c conda-forge mpi4py msmpi\n\nMPICH and many of its derivatives are ABI-compatible. You can provide\nthe package specification ``mpich=X.Y.*=external_*`` (where ``X`` and\n``Y`` are the major and minor version numbers) to request the conda\npackage manager to use system-provided MPICH (or derivative)\nlibraries.\n\nThe ``openmpi`` package on conda-forge has built-in CUDA support, but\nit is disabled by default. To enable it, follow the instruction\noutlined during ``conda install``. Additionally, UCX support is also\navailable once the ``ucx`` package is installed.\n\nOn **Fedora Linux** systems (as well as **RHEL** and their derivatives\nusing the EPEL software repository), you can install binary packages\nwith the system package manager::\n\n* using ``dnf`` and the ``mpich`` package::\n\n  $ sudo dnf install python3-mpi4py-mpich\n\n* using ``dnf`` and the ``openmpi`` package::\n\n  $ sudo dnf install python3-mpi4py-openmpi\n\nPlease remember to load the correct MPI module for your chosen MPI\nimplementation\n\n* for the ``mpich`` package do::\n\n  $ module load mpi/mpich-$(arch)\n  $ python -c \"from mpi4py import MPI\"\n\n* for the ``openmpi`` package do::\n\n  $ module load mpi/openmpi-$(arch)\n  $ python -c \"from mpi4py import MPI\"\n\nOn **Ubuntu Linux** and **Debian Linux** systems, binary packages are\navailable for installation using the system package manager::\n\n  $ sudo apt install python3-mpi4py\n\nNote that on Ubuntu/Debian systems, the mpi4py package uses Open\nMPI. To use MPICH, install the ``libmpich-dev`` and ``python3-dev``\npackages (and any other required development tools). Afterwards,\ninstall mpi4py from sources using ``pip``.\n\n**macOS** users can install mpi4py using the Homebrew package\nmanager::\n\n  $ brew install mpi4py\n\nNote that the Homebrew mpi4py package uses Open MPI. Alternatively,\ninstall the ``mpich`` package and next install mpi4py from sources\nusing ``pip``.\n\n**Windows** users can install mpi4py from binary wheels hosted on the\nPython Package Index (PyPI) using ``pip``::\n\n  $ python -m pip install mpi4py\n\nWindows wheels require a separate, system-wide installation of the\nMicrosoft MPI runtime.\n\n\nCitations\n---------\n\nIf MPI for Python been significant to a project that leads to an\nacademic publication, please acknowledge that fact by citing the\nproject.\n\n* L. Dalcin and Y.-L. L. Fang,\n  *mpi4py: Status Update After 12 Years of Development*,\n  Computing in Science & Engineering, 23(4):47-54, 2021.\n  https://doi.org/10.1109/MCSE.2021.3083216\n\n* L. Dalcin, P. Kler, R. Paz, and A. Cosimo,\n  *Parallel Distributed Computing using Python*,\n  Advances in Water Resources, 34(9):1124-1139, 2011.\n  https://doi.org/10.1016/j.advwatres.2011.04.013\n\n* L. Dalcin, R. Paz, M. Storti, and J. D'Elia,\n  *MPI for Python: performance improvements and MPI-2 extensions*,\n  Journal of Parallel and Distributed Computing, 68(5):655-662, 2008.\n  https://doi.org/10.1016/j.jpdc.2007.09.005\n\n* L. Dalcin, R. Paz, and M. Storti,\n  *MPI for Python*,\n  Journal of Parallel and Distributed Computing, 65(9):1108-1115, 2005.\n  https://doi.org/10.1016/j.jpdc.2005.03.010\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "Python bindings for MPI (includes MPICH binaries)",
    "version": "3.1.5",
    "project_urls": {
        "Download": "https://github.com/mpi4py/mpi4py/releases/download/3.1.5/mpi4py-3.1.5.tar.gz",
        "Homepage": "https://github.com/mpi4py/mpi4py/"
    },
    "split_keywords": [
        "scientific computing",
        "parallel computing",
        "message passing interface",
        "mpi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1ae3942a8e3322e3f1a265409d4028843c2770864f9ee699ba692296aa743232",
                "md5": "34ce7ff6deeae51a3688e6ca885998bc",
                "sha256": "53568f445bd7a129cb56e052b1b8fa98b6ea2ce82ab17e3733fda1be52edbe0b"
            },
            "downloads": -1,
            "filename": "mpi4py_mpich-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "34ce7ff6deeae51a3688e6ca885998bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
            "size": 6032995,
            "upload_time": "2024-02-03T17:47:16",
            "upload_time_iso_8601": "2024-02-03T17:47:16.734516Z",
            "url": "https://files.pythonhosted.org/packages/1a/e3/942a8e3322e3f1a265409d4028843c2770864f9ee699ba692296aa743232/mpi4py_mpich-3.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ff2efbc656df5960031ff43e5aba0d80b1930362b04acd4a67ec30cb673e511",
                "md5": "6a94da9cc7e8b00bac9309be99f4596a",
                "sha256": "7a176b16b7c5630fe84f0f871cfd3428ca545cdffbbfae31157607e948973acf"
            },
            "downloads": -1,
            "filename": "mpi4py_mpich-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6a94da9cc7e8b00bac9309be99f4596a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
            "size": 6220861,
            "upload_time": "2024-02-03T17:47:19",
            "upload_time_iso_8601": "2024-02-03T17:47:19.010538Z",
            "url": "https://files.pythonhosted.org/packages/9f/f2/efbc656df5960031ff43e5aba0d80b1930362b04acd4a67ec30cb673e511/mpi4py_mpich-3.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5269b7dfba2ba1b4a1de3ab024cd4e8a0897782572b70317c19d5a1d61592991",
                "md5": "f59d0309e5b0a1f4ffa6f8b0d1d4fd92",
                "sha256": "28e5b85fccc6d59b1bb2939917685c88c35657cc907109cdc98cc6bcdab59549"
            },
            "downloads": -1,
            "filename": "mpi4py_mpich-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f59d0309e5b0a1f4ffa6f8b0d1d4fd92",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
            "size": 6047725,
            "upload_time": "2024-02-03T17:47:21",
            "upload_time_iso_8601": "2024-02-03T17:47:21.086227Z",
            "url": "https://files.pythonhosted.org/packages/52/69/b7dfba2ba1b4a1de3ab024cd4e8a0897782572b70317c19d5a1d61592991/mpi4py_mpich-3.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-03 17:47:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mpi4py",
    "github_project": "mpi4py",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "appveyor": true,
    "circle": true,
    "tox": true,
    "lcname": "mpi4py-mpich"
}
        
Elapsed time: 2.97599s