{ "info": { "author": "Mike McKerns", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering", "Topic :: Software Development" ], "description": "--------------------------------------------------------------------------\npathos: parallel graph management and execution in heterogeneous computing\n--------------------------------------------------------------------------\n\nAbout the Pathos Framework\n==========================\n\n``pathos`` is a framework for heterogenous computing. It provides a consistent\nhigh-level interface for configuring and launching parallel computations\nacross heterogenous resources. ``pathos`` provides configurable launchers for\nparallel and distributed computing, where each launcher contains the\nsyntactic logic to configure and launch jobs in an execution environment.\nExamples of launchers that plug into ``pathos`` are: a queue-less MPI-based\nlauncher (in ``pyina``), a ssh-based launcher (in ``pathos``), and a multi-process\nlauncher (in ``multiprocess``).\n\n``pathos`` provides a consistent interface for parallel and/or distributed\nversions of ``map`` and ``apply`` for each launcher, thus lowering the barrier\nfor users to extend their code to parallel and/or distributed resources.\nThe guiding design principle behind ``pathos`` is that ``map`` and ``apply``\nshould be drop-in replacements in otherwise serial code, and thus switching\nto one or more of the ``pathos`` launchers is all that is needed to enable\ncode to leverage the selected parallel or distributed computing resource.\nThis not only greatly reduces the time to convert a code to parallel, but it\nalso enables a single code-base to be maintained instead of requiring\nparallel, serial, and distributed versions of a code. ``pathos`` maps can be\nnested, thus hierarchical heterogenous computing is possible by merely\nselecting the desired hierarchy of ``map`` and ``pipe`` (``apply``) objects.\n\nThe ``pathos`` framework is composed of several interoperating packages:\n\n - ``dill``: a utility to serialize all of python\n - ``pox``: utilities for filesystem exploration and automated builds\n - ``klepto``: persistent caching to memory, disk, or database\n - ``multiprocess``: better multiprocessing and multithreading in python\n - ``ppft``: distributed and parallel python\n - ``pyina``: MPI parallel ``map`` and cluster scheduling\n - ``pathos``: graph management and execution in heterogenous computing\n\n\nAbout Pathos\n============\n\nThe ``pathos`` package provides a few basic tools to make parallel and\ndistributed computing more accessible to the end user. The goal of ``pathos``\nis to enable the user to extend their own code to parallel and distributed\ncomputing with minimal refactoring.\n\n``pathos`` provides methods for configuring, launching, monitoring, and\ncontrolling a service on a remote host. One of the most basic features\nof ``pathos`` is the ability to configure and launch a RPC-based service\non a remote host. ``pathos`` seeds the remote host with the ``portpicker``\nscript, which allows the remote host to inform the localhost of a port\nthat is available for communication.\n\nBeyond the ability to establish a RPC service, and then post requests,\nis the ability to launch code in parallel. Unlike parallel computing\nperformed at the node level (typically with MPI), ``pathos`` enables the\nuser to launch jobs in parallel across heterogeneous distributed resources.\n``pathos`` provides distributed ``map`` and ``pipe`` algorithms, where a mix of\nlocal processors and distributed workers can be selected. ``pathos``\nalso provides a very basic automated load balancing service, as well as\nthe ability for the user to directly select the resources.\n\nThe high-level ``pool.map`` interface, yields a ``map`` implementation that\nhides the RPC internals from the user. With ``pool.map``, the user can launch\ntheir code in parallel, and as a distributed service, using standard python\nand without writing a line of server or parallel batch code.\n\nRPC servers and communication in general is known to be insecure. However,\ninstead of attempting to make the RPC communication itself secure, ``pathos``\nprovides the ability to automatically wrap any distributes service or\ncommunication in a ssh-tunnel. Ssh is a universally trusted method.\nUsing ssh-tunnels, ``pathos`` has launched several distributed calculations\non national lab clusters, and to date has performed test calculations\nthat utilize node-to-node communication between several national lab clusters\nand a user's laptop. ``pathos`` allows the user to configure and launch\nat a very atomistic level, through raw access to ssh and scp. \n\n``pathos`` is the core of a python framework for heterogeneous computing.\n``pathos`` is in active development, so any user feedback, bug reports, comments,\nor suggestions are highly appreciated. A list of known issues is maintained\nat http://trac.mystic.cacr.caltech.edu/project/pathos/query.html, with a public\nticket list at https://github.com/uqfoundation/pathos/issues.\n\n\nMajor Features\n==============\n\n``pathos`` provides a configurable distributed parallel ``map`` interface\nto launching RPC service calls, with:\n\n - a ``map`` interface that meets and extends the python ``map`` standard\n - the ability to submit service requests to a selection of servers\n - the ability to tunnel server communications with ssh\n\nThe ``pathos`` core is built on low-level communication to remote hosts using\nssh. The interface to ssh, scp, and ssh-tunneled connections can:\n\n - configure and launch remote processes with ssh\n - configure and copy file objects with scp\n - establish an tear-down a ssh-tunnel\n\nTo get up and running quickly, ``pathos`` also provides infrastructure to:\n\n - easily establish a ssh-tunneled connection to a RPC server\n\n\nCurrent Release\n===============\n\nThis documentation is for version ``pathos-0.2.5``.\n\nThe latest released version of ``pathos`` is available from:\n\n https://pypi.org/project/pathos\n\n``pathos`` is distributed under a 3-clause BSD license.\n\n >>> import pathos\n >>> print (pathos.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``pathos`` is packaged to install from source, so you must\ndownload the tarball, unzip, and run the installer::\n\n [download]\n $ tar -xvzf pathos-0.2.5.tar.gz\n $ cd pathos-0.2.5\n $ python setup py build\n $ python setup py install\n\nYou will be warned of any missing dependencies and/or settings\nafter you run the \"build\" step above. ``pathos`` depends on ``dill`` and\n``pox``, each of which are essentially subpackages of ``pathos`` but are\nreleased independently. ``pathos`` also depends on ``multiprocess`` and\n``ppft``. You must install all of the ``pathos`` framework packages for\n``pathos`` to provide the full functionality for heterogeneous computing. \n\nAlternately, ``pathos`` can be installed with ``pip`` or ``easy_install``::\n\n $ pip install pathos\n\n\nRequirements\n============\n\n``pathos`` requires:\n\n - ``python``, **version >= 2.6** or **version >= 3.1**, or ``pypy``\n - ``dill``, **version >= 0.3.1**\n - ``pox``, **version >= 0.2.7**\n - ``ppft``, **version >= 1.6.6.1**\n - ``multiprocess``, **version >= 0.70.9**\n\nOptional requirements:\n\n - ``setuptools``, **version >= 0.6**\n - ``pyina``, **version >= 0.2.2**\n - ``rpyc``, **version >= 3.0.6**\n - ``mystic``, **version >= 0.3.4**\n\n\nMore Information\n================\n\nProbably the best way to get started is to look at the documentation at\nhttp://pathos.rtfd.io. Also see ``pathos.tests`` and ``pathos.examples``\nfor a set of scripts that demonstrate the configuration and launching of\ncommunications with ssh and scp, and demonstrate the configuration and\nexecution of jobs in a hierarchical parallel workflow. You can run the test\nsuite with ``python -m pathos.tests``. Tunnels and other connections to\nremote servers can be established with the ``pathos_connect`` script (or with\n``python -m pathos``). See ``pathos_connect --help`` for more information.\n``pathos`` also provides a ``portpicker`` script to select an open port\n(also available with ``python -m pathos.portpicker``). The source code is \ngenerally well documented, so further questions may be resolved by inspecting\nthe code itself. Please feel free to submit a ticket on github, or ask a\nquestion on stackoverflow (**@Mike McKerns**).\nIf you would like to share how you use ``pathos`` in your work, please send\nan email (to **mmckerns at uqfoundation dot org**).\n\nImportant classes and functions are found here:\n\n - ``pathos.abstract_launcher`` [the worker pool API definition]\n - ``pathos.pools`` [all of the pathos worker pools]\n - ``pathos.core`` [the high-level command interface] \n - ``pathos.hosts`` [the hostname registry interface] \n - ``pathos.serial.SerialPool`` [the serial python worker pool]\n - ``pathos.parallel.ParallelPool`` [the parallelpython worker pool]\n - ``pathos.multiprocessing.ProcessPool`` [the multiprocessing worker pool]\n - ``pathos.threading.ThreadPool`` [the multithreading worker pool]\n - ``pathos.connection.Pipe`` [the launcher base class]\n - ``pathos.secure.Pipe`` [the secure launcher base class]\n - ``pathos.secure.Copier`` [the secure copier base class]\n - ``pathos.secure.Tunnel`` [the secure tunnel base class]\n - ``pathos.selector.Selector`` [the selector base class]\n - ``pathos.server.Server`` [the server base class]\n - ``pathos.profile`` [profiling in threads and processes]\n\n``pathos`` also provides two convenience scripts that are used to establish\nsecure distributed connections. These scripts are installed to a directory\non the user's ``$PATH``, and thus can be run from anywhere:\n\n - ``portpicker`` [get the portnumber of an open port]\n - ``pathos_connect`` [establish tunnel and/or RPC server]\n\nTyping ``--help`` as an argument to any of the above scripts will print out an\ninstructive help message.\n\n\nCitation\n========\n\nIf you use ``pathos`` to do research that leads to publication, we ask that you\nacknowledge use of ``pathos`` 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 http://trac.mystic.cacr.caltech.edu/project/pathos\n\nPlease see http://trac.mystic.cacr.caltech.edu/project/pathos or\nhttp://arxiv.org/pdf/1202.1056 for further information.", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/uqfoundation/pathos/releases/download/pathos-0.2.5/pathos-0.2.5.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.org/project/pathos", "keywords": "", "license": "3-clause BSD", "maintainer": "", "maintainer_email": "", "name": "pathos", "package_url": "https://pypi.org/project/pathos/", "platform": "Linux", "project_url": "https://pypi.org/project/pathos/", "project_urls": { "Download": "https://github.com/uqfoundation/pathos/releases/download/pathos-0.2.5/pathos-0.2.5.tar.gz", "Homepage": "https://pypi.org/project/pathos" }, "release_url": "https://pypi.org/project/pathos/0.2.5/", "requires_dist": null, "requires_python": "", "summary": "parallel graph management and execution in heterogeneous computing", "version": "0.2.5" }, "last_serial": 5900225, "releases": { "0.1a1": [ { "comment_text": "", "digests": { "md5": "30b5012ff333424e3579a17638202608", "sha256": "fc4e194a14813b9cb191d04699aa4339e514e48f4c2d16ef32ce25848f23269e" }, "downloads": -1, "filename": "pathos-0.1a1.tgz", "has_sig": false, "md5_digest": "30b5012ff333424e3579a17638202608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 574653, "upload_time": "2015-12-22T20:23:38", "url": "https://files.pythonhosted.org/packages/03/8a/402977c4f5d2432e84585c0f70bb18540cf4b6ba00b846aa675a9b7fec9f/pathos-0.1a1.tgz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3e75bd626c4c16a60aa78d9f35de6cfb", "sha256": "e35418af733bf434da83746d46acca94375d6e306b3df330b2a1808db026a188" }, "downloads": -1, "filename": "pathos-0.2.0.tgz", "has_sig": false, "md5_digest": "3e75bd626c4c16a60aa78d9f35de6cfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68682, "upload_time": "2016-07-18T08:30:56", "url": "https://files.pythonhosted.org/packages/1d/a0/e5107f85bcb397c82ee875d005d88a537d4fdc1d1498f34bb15dfba7ca49/pathos-0.2.0.tgz" }, { "comment_text": "", "digests": { "md5": "7a840ce6c3a67d71e6ad7339034ec53e", "sha256": "2f4e67e7914c95fb0cce766bab173eb2c5860ee420108fa183099557ac2e50e9" }, "downloads": -1, "filename": "pathos-0.2.0.zip", "has_sig": false, "md5_digest": "7a840ce6c3a67d71e6ad7339034ec53e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123596, "upload_time": "2016-07-18T08:30:27", "url": "https://files.pythonhosted.org/packages/f8/f0/fb59d5b935d7c37a2b1cedc45aad38985fc0508269ef0387e2d357c42e41/pathos-0.2.0.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d4405b588d7a23ef919fe19527b3fa88", "sha256": "a153a0a9d093220688ba7972e4a9a95996a6a5caece2feb3576b22e6d474c6a0" }, "downloads": -1, "filename": "pathos-0.2.1.zip", "has_sig": false, "md5_digest": "d4405b588d7a23ef919fe19527b3fa88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82807, "upload_time": "2017-07-07T23:41:38", "url": "https://files.pythonhosted.org/packages/08/c4/3aacab6edace15a4429637259790983e1c9abcc196a0eff344fe55489a17/pathos-0.2.1.zip" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f661ef5f5772ce58cb1fd32f5916b8de", "sha256": "b18f8e552e6422b5e3beb74f0e9ff84918fb163c584cc947cc7d0845956194a0" }, "downloads": -1, "filename": "pathos-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f661ef5f5772ce58cb1fd32f5916b8de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 161278, "upload_time": "2018-06-21T06:30:44", "url": "https://files.pythonhosted.org/packages/8b/14/7c032f5ff29f16c8b48c6bb20358bbefcaf9180463d1a62be50513f84d3d/pathos-0.2.2.tar.gz" } ], "0.2.2.1": [ { "comment_text": "", "digests": { "md5": "4a18f2d89ac02f2990d98025a26d709f", "sha256": "69486cfe8c9fbd028395df445e4205ea3001d7ca5608d8d0b67b67ce98bb8892" }, "downloads": -1, "filename": "pathos-0.2.2.1.tar.gz", "has_sig": false, "md5_digest": "4a18f2d89ac02f2990d98025a26d709f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 161805, "upload_time": "2018-07-05T13:22:02", "url": "https://files.pythonhosted.org/packages/ca/83/6937d36e68f6a748f57927cc115d0b8cc73a0167637cae0cbd8ee9438baa/pathos-0.2.2.1.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "b6ee35e5d0f71aa7eb563e1b806b01ed", "sha256": "954c5b0a8b257c375e35d311c65fa62a210a3d65269195557de38418ac9f61f9" }, "downloads": -1, "filename": "pathos-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b6ee35e5d0f71aa7eb563e1b806b01ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162017, "upload_time": "2019-01-22T00:43:51", "url": "https://files.pythonhosted.org/packages/b1/3e/391c9a3c639fc5ce7502ac16fde81dcc5508f2a9cc0d1acc650725400b52/pathos-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d7d53e5200acb795693bc967f4872f08", "sha256": "610dc244b6b5c240396ae392bb6f94d7e990b0062d4032c5e9ab00b594ed8720" }, "downloads": -1, "filename": "pathos-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d7d53e5200acb795693bc967f4872f08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162210, "upload_time": "2019-06-27T18:45:38", "url": "https://files.pythonhosted.org/packages/ed/6f/c6d34bda9f6383b693418f7b2340e8e6692e5a0ed154e918c09399fbf2ec/pathos-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "2404ef58d7daa944ba1bb65397ad756a", "sha256": "21ae2cb1d5a76dcf57d5fe93ae8719c7339f467e246163650c08ccf35b87c846" }, "downloads": -1, "filename": "pathos-0.2.5.tar.gz", "has_sig": false, "md5_digest": "2404ef58d7daa944ba1bb65397ad756a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162745, "upload_time": "2019-09-28T17:56:14", "url": "https://files.pythonhosted.org/packages/c6/a2/cd59f73d5ede4f122687bf8f63de5d671c9561e493ca699241f05b038278/pathos-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2404ef58d7daa944ba1bb65397ad756a", "sha256": "21ae2cb1d5a76dcf57d5fe93ae8719c7339f467e246163650c08ccf35b87c846" }, "downloads": -1, "filename": "pathos-0.2.5.tar.gz", "has_sig": false, "md5_digest": "2404ef58d7daa944ba1bb65397ad756a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162745, "upload_time": "2019-09-28T17:56:14", "url": "https://files.pythonhosted.org/packages/c6/a2/cd59f73d5ede4f122687bf8f63de5d671c9561e493ca699241f05b038278/pathos-0.2.5.tar.gz" } ] }