pyina


Namepyina JSON
Version 0.2.9 PyPI version JSON
download
home_pagehttps://github.com/uqfoundation/pyina
SummaryMPI parallel map and cluster scheduling
upload_time2024-01-28 20:31:04
maintainerMike McKerns
docs_urlNone
authorMike McKerns
requires_python>=3.8
licenseBSD-3-Clause
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            ----------------------------------------------
pyina: MPI parallel map and cluster scheduling
----------------------------------------------

About Pyina
===========

The ``pyina`` package provides several basic tools to make MPI-based
parallel computing more accessable to the end user. The goal of ``pyina``
is to allow the user to extend their own code to MPI-based parallel
computing with minimal refactoring.

The central element of ``pyina`` is the parallel map algorithm.
``pyina`` currently provides two strategies for executing the parallel-map,
where a strategy is the algorithm for distributing the work list of
jobs across the availble nodes.  These strategies can be used *"in-the-raw"*
(i.e. directly) to provide the map algorithm to a user's own mpi-aware code.
Further, in ``pyina.mpi`` ``pyina`` provides pipe and map implementations
(known as *"easy map"*) that hide the MPI internals from the user. With the
*"easy map"*, the user can launch their code in parallel batch mode -- using
standard Python and without ever having to write a line of MPI code.

There are several ways that a user would typically launch their code in
parallel -- directly with ``mpirun`` or ``mpiexec``, or through the use of a
scheduler such as *torque* or *slurm*. ``pyina`` encapsulates several of these
*"launchers"*, and provides a common interface to the different methods of
launching a MPI job.

``pyina`` is part of ``pathos``, a Python framework for heterogeneous computing.
``pyina`` is in active development, so any user feedback, bug reports, comments,
or suggestions are highly appreciated.  A list of issues is located at https://github.com/uqfoundation/pyina/issues, with a legacy list maintained at https://uqfoundation.github.io/project/pathos/query.


Major Features
==============

``pyina`` provides a highly configurable parallel map interface
to running MPI jobs, with:

    - a map interface that extends the Python ``map`` standard
    - the ability to submit batch jobs to a selection of schedulers
    - the ability to customize node and process launch configurations
    - the ability to launch parallel MPI jobs with standard Python
    - ease in selecting different strategies for processing a work list


Current Release
===============

The latest released version of ``pyina`` is available at:

    https://pypi.org/project/pyina

``pyina`` is distributed under a 3-clause BSD license.


Development Version
===================

You can get the latest development version with all the shiny new features at:

    https://github.com/uqfoundation

If you have a new contribution, please submit a pull request.


Installation
============

``pyina`` can be installed with ``pip``::

    $ pip install pyina

A version of MPI must also be installed. Launchers in ``pyina`` that
submit to a scheduler will throw errors if the underlying scheduler is
not available, however a scheduler is not required for ``pyina`` to execute.


Requirements
============

``pyina`` requires:

    - ``python`` (or ``pypy``), **>=3.8**
    - ``setuptools``, **>=42**
    - ``cython``, **>=0.29.30**
    - ``numpy``, **>=1.0**
    - ``mpi4py``, **>=1.3**
    - ``dill``, **>=0.3.8**
    - ``pox``, **>=0.3.4**
    - ``pathos``, **>=0.3.2**


More Information
================

Probably the best way to get started is to look at the documentation at
http://pyina.rtfd.io. Also see https://github.com/uqfoundation/pyina/tree/master/examples and ``pyina.tests`` for a set of scripts that demonstrate the
configuration and launching of mpi-based parallel jobs using the *"easy map"*
interface. You can run the tests with ``python -m pyina.tests``. A script is
included for querying, setting up, and tearing down an MPI environment, see
``python -m pyina`` for more information. The source code is generally well
documented, so further questions may be resolved by inspecting the code itself.
Please feel free to submit a ticket on github, or ask a question on
stackoverflow (**@Mike McKerns**). If you would like to share how you use
``pyina`` in your work, please send an email (to **mmckerns at uqfoundation dot
org**).

Important classes and functions are found here:

    - ``pyina.mpi``           [the map API definition]
    - ``pyina.schedulers``    [all available schedulers] 
    - ``pyina.launchers``     [all available launchers] 

Mapping strategies are found here:

    - ``pyina.mpi_scatter``   [the scatter-gather strategy]
    - ``pyina.mpi_pool``      [the worker pool strategy]

``pyina`` also provides a convience script that helps navigate the
MPI environment. This script can be run from anywhere with::

    $ mpi_world

If may also be convienent to set a shell alias for the launch of 'raw'
mpi-python jobs. Set something like the following (for bash)::

    $ alias mpython1='mpiexec -np 1 `which python`'
    $ alias mpython2='mpiexec -np 2 `which python`'
    $ ...


Citation
========

If you use ``pyina`` to do research that leads to publication, we ask that you
acknowledge use of ``pyina`` by citing the following in your publication::

    M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis,
    "Building a framework for predictive science", Proceedings of
    the 10th Python in Science Conference, 2011;
    http://arxiv.org/pdf/1202.1056

    Michael McKerns and Michael Aivazis,
    "pathos: a framework for heterogeneous computing", 2010- ;
    https://uqfoundation.github.io/project/pathos

Please see https://uqfoundation.github.io/project/pathos or
http://arxiv.org/pdf/1202.1056 for further information.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/uqfoundation/pyina",
    "name": "pyina",
    "maintainer": "Mike McKerns",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "mmckerns@uqfoundation.org",
    "keywords": "",
    "author": "Mike McKerns",
    "author_email": "mmckerns@uqfoundation.org",
    "download_url": "https://files.pythonhosted.org/packages/d7/93/7dd267f05e6e829d2f2cfee47f36a56f6a4e8b35f05ef7c618d714bdad89/pyina-0.2.9.tar.gz",
    "platform": "Linux",
    "description": "----------------------------------------------\npyina: MPI parallel map and cluster scheduling\n----------------------------------------------\n\nAbout Pyina\n===========\n\nThe ``pyina`` package provides several basic tools to make MPI-based\nparallel computing more accessable to the end user. The goal of ``pyina``\nis to allow the user to extend their own code to MPI-based parallel\ncomputing with minimal refactoring.\n\nThe central element of ``pyina`` is the parallel map algorithm.\n``pyina`` currently provides two strategies for executing the parallel-map,\nwhere a strategy is the algorithm for distributing the work list of\njobs across the availble nodes.  These strategies can be used *\"in-the-raw\"*\n(i.e. directly) to provide the map algorithm to a user's own mpi-aware code.\nFurther, in ``pyina.mpi`` ``pyina`` provides pipe and map implementations\n(known as *\"easy map\"*) that hide the MPI internals from the user. With the\n*\"easy map\"*, the user can launch their code in parallel batch mode -- using\nstandard Python and without ever having to write a line of MPI code.\n\nThere are several ways that a user would typically launch their code in\nparallel -- directly with ``mpirun`` or ``mpiexec``, or through the use of a\nscheduler such as *torque* or *slurm*. ``pyina`` encapsulates several of these\n*\"launchers\"*, and provides a common interface to the different methods of\nlaunching a MPI job.\n\n``pyina`` is part of ``pathos``, a Python framework for heterogeneous computing.\n``pyina`` is in active development, so any user feedback, bug reports, comments,\nor suggestions are highly appreciated.  A list of issues is located at https://github.com/uqfoundation/pyina/issues, with a legacy list maintained at https://uqfoundation.github.io/project/pathos/query.\n\n\nMajor Features\n==============\n\n``pyina`` provides a highly configurable parallel map interface\nto running MPI jobs, with:\n\n    - a map interface that extends the Python ``map`` standard\n    - the ability to submit batch jobs to a selection of schedulers\n    - the ability to customize node and process launch configurations\n    - the ability to launch parallel MPI jobs with standard Python\n    - ease in selecting different strategies for processing a work list\n\n\nCurrent Release\n===============\n\nThe latest released version of ``pyina`` is available at:\n\n    https://pypi.org/project/pyina\n\n``pyina`` is distributed under a 3-clause BSD license.\n\n\nDevelopment Version\n===================\n\nYou can get the latest development version with all the shiny new features at:\n\n    https://github.com/uqfoundation\n\nIf you have a new contribution, please submit a pull request.\n\n\nInstallation\n============\n\n``pyina`` can be installed with ``pip``::\n\n    $ pip install pyina\n\nA version of MPI must also be installed. Launchers in ``pyina`` that\nsubmit to a scheduler will throw errors if the underlying scheduler is\nnot available, however a scheduler is not required for ``pyina`` to execute.\n\n\nRequirements\n============\n\n``pyina`` requires:\n\n    - ``python`` (or ``pypy``), **>=3.8**\n    - ``setuptools``, **>=42**\n    - ``cython``, **>=0.29.30**\n    - ``numpy``, **>=1.0**\n    - ``mpi4py``, **>=1.3**\n    - ``dill``, **>=0.3.8**\n    - ``pox``, **>=0.3.4**\n    - ``pathos``, **>=0.3.2**\n\n\nMore Information\n================\n\nProbably the best way to get started is to look at the documentation at\nhttp://pyina.rtfd.io. Also see https://github.com/uqfoundation/pyina/tree/master/examples and ``pyina.tests`` for a set of scripts that demonstrate the\nconfiguration and launching of mpi-based parallel jobs using the *\"easy map\"*\ninterface. You can run the tests with ``python -m pyina.tests``. A script is\nincluded for querying, setting up, and tearing down an MPI environment, see\n``python -m pyina`` for more information. The source code is generally well\ndocumented, so further questions may be resolved by inspecting the code itself.\nPlease feel free to submit a ticket on github, or ask a question on\nstackoverflow (**@Mike McKerns**). If you would like to share how you use\n``pyina`` in your work, please send an email (to **mmckerns at uqfoundation dot\norg**).\n\nImportant classes and functions are found here:\n\n    - ``pyina.mpi``           [the map API definition]\n    - ``pyina.schedulers``    [all available schedulers] \n    - ``pyina.launchers``     [all available launchers] \n\nMapping strategies are found here:\n\n    - ``pyina.mpi_scatter``   [the scatter-gather strategy]\n    - ``pyina.mpi_pool``      [the worker pool strategy]\n\n``pyina`` also provides a convience script that helps navigate the\nMPI environment. This script can be run from anywhere with::\n\n    $ mpi_world\n\nIf may also be convienent to set a shell alias for the launch of 'raw'\nmpi-python jobs. Set something like the following (for bash)::\n\n    $ alias mpython1='mpiexec -np 1 `which python`'\n    $ alias mpython2='mpiexec -np 2 `which python`'\n    $ ...\n\n\nCitation\n========\n\nIf you use ``pyina`` to do research that leads to publication, we ask that you\nacknowledge use of ``pyina`` by citing the following in your publication::\n\n    M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis,\n    \"Building a framework for predictive science\", Proceedings of\n    the 10th Python in Science Conference, 2011;\n    http://arxiv.org/pdf/1202.1056\n\n    Michael McKerns and Michael Aivazis,\n    \"pathos: a framework for heterogeneous computing\", 2010- ;\n    https://uqfoundation.github.io/project/pathos\n\nPlease see https://uqfoundation.github.io/project/pathos or\nhttp://arxiv.org/pdf/1202.1056 for further information.\n\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "MPI parallel map and cluster scheduling",
    "version": "0.2.9",
    "project_urls": {
        "Bug Tracker": "https://github.com/uqfoundation/pyina/issues",
        "Documentation": "http://pyina.rtfd.io",
        "Download": "https://pypi.org/project/pyina/#files",
        "Homepage": "https://github.com/uqfoundation/pyina",
        "Source Code": "https://github.com/uqfoundation/pyina"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "87319841ac6c17a57e759ae7ca771c3a624f93e6bca955a38d0eb389d00f2fb2",
                "md5": "29adf5808d1312edb5a14ad657803d09",
                "sha256": "fdf55e2a9cf39ebd830ba732c6e71527fb595a9da23b720d6322be49dc274c2a"
            },
            "downloads": -1,
            "filename": "pyina-0.2.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "29adf5808d1312edb5a14ad657803d09",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 45845,
            "upload_time": "2024-01-28T20:31:01",
            "upload_time_iso_8601": "2024-01-28T20:31:01.797472Z",
            "url": "https://files.pythonhosted.org/packages/87/31/9841ac6c17a57e759ae7ca771c3a624f93e6bca955a38d0eb389d00f2fb2/pyina-0.2.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d7937dd267f05e6e829d2f2cfee47f36a56f6a4e8b35f05ef7c618d714bdad89",
                "md5": "497521d7003a0a8e7141421eb6aad53f",
                "sha256": "dd0c394f8e01dac20a5e17ef39f5ba1806012ee90fdc6ec22d290ff94ef0035f"
            },
            "downloads": -1,
            "filename": "pyina-0.2.9.tar.gz",
            "has_sig": false,
            "md5_digest": "497521d7003a0a8e7141421eb6aad53f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 132709,
            "upload_time": "2024-01-28T20:31:04",
            "upload_time_iso_8601": "2024-01-28T20:31:04.243555Z",
            "url": "https://files.pythonhosted.org/packages/d7/93/7dd267f05e6e829d2f2cfee47f36a56f6a4e8b35f05ef7c618d714bdad89/pyina-0.2.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-28 20:31:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "uqfoundation",
    "github_project": "pyina",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": false,
    "tox": true,
    "lcname": "pyina"
}
        
Elapsed time: 0.26582s