{ "info": { "author": "Jamil Gafur, Geoffery Fairchild, Carrie Manore", "author_email": "jamilgafur@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Pyaesar\nPyaesar: A Multi-Noded Multi-Processor API\n\n## License\nThis software is licensed under the [BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause). Please see below for the license.\n\n## About Pyaesar\nThis Software Package allows users to take advantage of multi-processing on multiple nodes.\nThis code is developed as a combination of the [multi-process API](https://docs.python.org/3/library/multiprocessing.html)\nand the [MPI4Py API](https://mpi4py.readthedocs.io/en/stable/) (similar to a MAP).\nBy leveraging the MPI4Py code we can distribute the data across nodes and then generate a\npool on each node to process the data concurrently.\n\n``Pyaesar`` is a combination of MPI4Py and Python Multiprocess. This software package\nallows users to take advantage of multi-processing on multiple nodes.\n\n``multiprocess`` is a package from the Python language which supports the spawning of processes\nusing the standard library. ``multiprocess`` has been distributed in the standard\nlibrary since Python 2.6.\n\nFeatures:\n\n* An ``Emperor `` class makes it easy to submit tasks to a pool of worker\n processes.\n\n* The ``Emperor`` class allows you to distribute the tasks to a set of pools that can be distributed across nodes\n\n* Allows for the distribution on Embarrassingly Parallel code processing across Nodes\n\nAny user feedback, bug reports, comments, or suggestions are highly appreciated.\n\n## Requirements\nSoftware:\n\n* Pre-requisite: MPI\n* Python module: multiprocess\n* Python Module: MPI4Py\n\nProgram:\n* 1 Process per Node\n * mpirun -N 1 python name-of-file.py\n\n\n## To Note\nCertain implementations of MPI do not support `fork()`, which the `multiprocess` library uses to spawn processes on Unix systems.\nIf `fork()` is not supported, the MPI runtime will print a warning like the following:\n```\n--------------------------------------------------------------------------\nA process has executed an operation involving a call to the\n\"fork()\" system call to create a child process. Open MPI is currently\noperating in a condition that could result in memory corruption or\nother system errors; your job may hang, crash, or produce silent\ndata corruption. The use of fork() (or system() or other calls that\ncreate child processes) is strongly discouraged.\n\nThe process that invoked fork was:\n\n Local host: [[4727,3],2] (PID 23933)\n\nIf you are *absolutely sure* that your application will successfully\nand correctly survive a call to fork(), you may disable this warning\nby setting the mpi_warn_on_fork MCA parameter to 0.\n--------------------------------------------------------------------------\n```\nIf you encounter this error, you can avoid using `multiprocess` by creating an Emperor with only one process:\n```py\nimport Pyaesar.Emperor as Emperor\n\nEm = Emperor(nproc=1)\n...\n```\nIn this case, you may also launch more than one rank per node to increase the parallelism,\nalthough this method is not generally recommended due to the overhead of additional MPI ranks.\n\n\nFor more information about the `fork()` warning, see the following:\n\n- https://www.open-mpi.org/faq/?category=tuning#fork-warning\n- https://www.open-mpi.org/faq/?category=openfabrics#ofa-fork\n\n\n## Install / Uninstall\n\n`Pyaesar` requires an MPI compiler to install. Ensure that that your system has a valid MPI installation before attempting to install `Pyaesar`.\n\n### Pip\n\nWe've added `Pyaesar` to the [Python Package Index](https://pypi.org/project/Pyaesar/). To install `Pyaesar` with `pip` simply run\n```sh\npip install Pyaesar\n```\n\nTo uninstall `Pyaesar` simply run\n```sh\npip uninstall Pyaesar\n```\n\n### From source\n\nFollow these steps to install `Pyaesar` from source.\n\n1. Clone this repository\n```sh\ngit clone git@gitlab.com:jamilggafur/pyaesar.git\n```\n\n2. Install `Pyaesar` using setuptools\n\n```sh\ncd pyaesar\npython3 setup.py install\n```\n\n3. If you're contributing to `Pyaesar`, we recommend using the development build\n\n```sh\ncd pyaesar\npython3 setup.py develop\n```\n\nTo uninstall `Pyaesar` simply run\n```sh\npip uninstall Pyaesar\n```\n\n## How to use\n* This code is designed to work in the following format:\n * Node: Rank 0: breaks up the data in multiple sections that are about equally distributable between the set of nodes\n * Using MPI4Py, each section of data is distributed its associated node\n * Creates a Multiprocess pool on each node and processes the code\n\nIn order to accomplish this you need to ha\n* In order\n* Python Module: MPI4Py\n\n## Newest Version\nYou can get the latest development version with all the shiny new features at::\n https://gitlab.com/jamilggafur/pyaesar\n\nIf you have a new contribution, please submit a pull request.\n\n\n## More Information\nThe best way to get started is to look at the documentation, and the examples in the Examples folder.\nThere we have three examples of how to use the Pyaesar API.\n\nPlease feel free to submit a ticket on GitLab. If you would like to share how you use\n``Pyaesar`` in your work, please send an email\n(to **jamilgafur @ gmail dot com**).\n\n\n## Citation\nIf you use ``Pyaesar`` to do research that leads to publication, we ask that you\nacknowledge use of ``Pyaesar`` by citing the following in your publication::\n\n```\n@MISC{Pyaesar_2018,\n author = {Jamil Gafur and David {Neill Asanza} and Geoffrey Fairchild and Carrie Manore},\n title = {{Pyaesar: A Multi-Noded Multi-Processor API}},\n month = Sep,\n year = 2019,\n version = {1.0.3},\n journal = {GitLab repository},\n howpublished = {\\url{https://gitlab.com/jamilggafur/pyaesar/}},\n}\n```\n\n## License\ncopyright 2019. Triad National Security, LLC.\nAll rights reserved.\n\nThis program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security Administration. All rights in the program are reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear Security Administration. The Government is granted for itself and others acting on its behalf a nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.\n\n\n\n\nThis program is open source under the BSD-3 License.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/jamilggafur/pyaesar", "keywords": "", "license": "BSD", "maintainer": "Jamil Gafur", "maintainer_email": "jamilgafur@gmail.com", "name": "Pyaesar", "package_url": "https://pypi.org/project/Pyaesar/", "platform": "", "project_url": "https://pypi.org/project/Pyaesar/", "project_urls": { "Homepage": "https://gitlab.com/jamilggafur/pyaesar" }, "release_url": "https://pypi.org/project/Pyaesar/1.0.5/", "requires_dist": null, "requires_python": "", "summary": "Data Parallelized MultiNoded Distributed Interface", "version": "1.0.5", "yanked": false, "yanked_reason": null }, "last_serial": 6230300, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "8244c959d439e1d99a6f03a1548180f0", "sha256": "706b9c78cf36ef83b62146f6d62700fd25fd65417f6216a2d4d7ae60981e51b9" }, "downloads": -1, "filename": "Pyaesar-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8244c959d439e1d99a6f03a1548180f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15363, "upload_time": "2019-10-24T14:19:03", "upload_time_iso_8601": "2019-10-24T14:19:03.043501Z", "url": "https://files.pythonhosted.org/packages/ab/61/70d4983d0dbdeabd942117567806edafbc95f685db898865a207dce69478/Pyaesar-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "85f94ac93ef6ba402cc710c5fce98f3c", "sha256": "7b6745b596ca05af02162a5567886e5303d7220e09732f2dc18b831ae870e003" }, "downloads": -1, "filename": "Pyaesar-1.0.0.tar.gz", "has_sig": false, "md5_digest": "85f94ac93ef6ba402cc710c5fce98f3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10754, "upload_time": "2019-10-24T14:19:05", "upload_time_iso_8601": "2019-10-24T14:19:05.140053Z", "url": "https://files.pythonhosted.org/packages/b1/5c/bba925388e51e6ede0eeb6f3a4f97d906e94b58f49998af6e46132d84f26/Pyaesar-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3dd944a200ca58ba69acff6482596f9e", "sha256": "691b3d805f27834ba0e5b168f629a3148ef39229320b7a075a54605f859d51c7" }, "downloads": -1, "filename": "Pyaesar-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3dd944a200ca58ba69acff6482596f9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16629, "upload_time": "2019-10-24T14:22:18", "upload_time_iso_8601": "2019-10-24T14:22:18.834148Z", "url": "https://files.pythonhosted.org/packages/60/40/91e7854ac1e53054c6bfea91abbb7ca2acce73c300a7558045871662d51b/Pyaesar-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "444e7ef616da3ed5e831408425658adb", "sha256": "300b96a4e88acd82b0a9c9d522dfbd4d2dd2bec700760b29001ec8a78cc3c05c" }, "downloads": -1, "filename": "Pyaesar-1.0.1.tar.gz", "has_sig": false, "md5_digest": "444e7ef616da3ed5e831408425658adb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10758, "upload_time": "2019-10-24T14:22:20", "upload_time_iso_8601": "2019-10-24T14:22:20.420319Z", "url": "https://files.pythonhosted.org/packages/e9/2e/aa4099ef722525af096d27a0088ca35f0ed63cc93ab0e60e8f2074c4bf60/Pyaesar-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "6411c96e963aaadb1a3e8c28b81092d8", "sha256": "1e794b9f7680bf8fdcb7d1d02dab7a84dcf4e23f2b9db6ab56dd7e5ab12ea2db" }, "downloads": -1, "filename": "Pyaesar-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6411c96e963aaadb1a3e8c28b81092d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16630, "upload_time": "2019-10-24T14:23:55", "upload_time_iso_8601": "2019-10-24T14:23:55.857644Z", "url": "https://files.pythonhosted.org/packages/7b/87/27545fd16c1535963b7c18443df67d6b0d3c7af3aad8cca3376435f24dfc/Pyaesar-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "16718ec23379c28e820517bf17ca8876", "sha256": "2342efc96e3a0b233ed1cb4636ad4f6e91f51c72f3a0d5b37b3dcaeb4d038837" }, "downloads": -1, "filename": "Pyaesar-1.0.2.tar.gz", "has_sig": false, "md5_digest": "16718ec23379c28e820517bf17ca8876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10755, "upload_time": "2019-10-24T14:23:57", "upload_time_iso_8601": "2019-10-24T14:23:57.442829Z", "url": "https://files.pythonhosted.org/packages/3a/15/34d9fdf3297c680b6ba27af298e7a628477b831bd9e0fb0a5d51b2c2715d/Pyaesar-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "46dc5e350636bbe26ab997c89e8e28b9", "sha256": "a6a1208691a73594f7a765ee8854efa40d4c187975db53dd4b4e3a1752954be6" }, "downloads": -1, "filename": "Pyaesar-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "46dc5e350636bbe26ab997c89e8e28b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15310, "upload_time": "2019-10-24T14:31:38", "upload_time_iso_8601": "2019-10-24T14:31:38.285414Z", "url": "https://files.pythonhosted.org/packages/f0/b4/c2a4f8eb3c6b66d2772e739436a229c100400a47b194da9356d66d477e04/Pyaesar-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9fa5ec870ec8b37977621b483260d9c0", "sha256": "3c9e3793836fb0917ebbd416fa85a795c0b91b96a41c255e22942442670aa053" }, "downloads": -1, "filename": "Pyaesar-1.0.3.tar.gz", "has_sig": false, "md5_digest": "9fa5ec870ec8b37977621b483260d9c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10619, "upload_time": "2019-10-24T14:31:39", "upload_time_iso_8601": "2019-10-24T14:31:39.940316Z", "url": "https://files.pythonhosted.org/packages/1b/bc/b0ed56988250c7b18746ecf14672ad9bf7a3ab1f824d3c515f2a6763ed9b/Pyaesar-1.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "c6377d2b8b661e4991588e8a6c337380", "sha256": "5ad26e043e8d9475b0532c8a4ca560c6e18a4770deb13d1dad6f619d5c6ea3c8" }, "downloads": -1, "filename": "Pyaesar-1.0.5.tar.gz", "has_sig": false, "md5_digest": "c6377d2b8b661e4991588e8a6c337380", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11007, "upload_time": "2019-12-02T19:04:16", "upload_time_iso_8601": "2019-12-02T19:04:16.674476Z", "url": "https://files.pythonhosted.org/packages/f2/8c/6273c6bea08f3fe113c89b8c19f41f6d69a64009aeb51477f0b0cfbd019b/Pyaesar-1.0.5.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c6377d2b8b661e4991588e8a6c337380", "sha256": "5ad26e043e8d9475b0532c8a4ca560c6e18a4770deb13d1dad6f619d5c6ea3c8" }, "downloads": -1, "filename": "Pyaesar-1.0.5.tar.gz", "has_sig": false, "md5_digest": "c6377d2b8b661e4991588e8a6c337380", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11007, "upload_time": "2019-12-02T19:04:16", "upload_time_iso_8601": "2019-12-02T19:04:16.674476Z", "url": "https://files.pythonhosted.org/packages/f2/8c/6273c6bea08f3fe113c89b8c19f41f6d69a64009aeb51477f0b0cfbd019b/Pyaesar-1.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }