{"id":13936139,"url":"https://github.com/charmplusplus/charm4py","last_synced_at":"2026-01-14T07:48:58.210Z","repository":{"id":34039120,"uuid":"119602558","full_name":"charmplusplus/charm4py","owner":"charmplusplus","description":"Parallel Programming with Python and Charm++","archived":false,"fork":false,"pushed_at":"2025-07-09T13:43:35.000Z","size":2193,"stargazers_count":296,"open_issues_count":36,"forks_count":23,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-01-05T01:28:12.944Z","etag":null,"topics":["asynchronous-tasks","distributed-computing","hpc","parallel-programming","python","runtime"],"latest_commit_sha":null,"homepage":"https://charm4py.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charmplusplus.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-01-30T22:28:20.000Z","updated_at":"2025-11-12T03:20:34.000Z","dependencies_parsed_at":"2023-11-06T07:27:41.698Z","dependency_job_id":"5e467ff8-004b-4715-8638-65511aecb896","html_url":"https://github.com/charmplusplus/charm4py","commit_stats":null,"previous_names":["charmplusplus/charm4py","uiuc-ppl/charm4py"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/charmplusplus/charm4py","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmplusplus%2Fcharm4py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmplusplus%2Fcharm4py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmplusplus%2Fcharm4py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmplusplus%2Fcharm4py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charmplusplus","download_url":"https://codeload.github.com/charmplusplus/charm4py/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmplusplus%2Fcharm4py/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous-tasks","distributed-computing","hpc","parallel-programming","python","runtime"],"created_at":"2024-08-07T23:02:24.778Z","updated_at":"2026-01-14T07:48:58.192Z","avatar_url":"https://github.com/charmplusplus.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"========\nCharm4py\n========\n\n\n.. image:: https://github.com/charmplusplus/charm4py/actions/workflows/charm4py.yml/badge.svg?event=push\n       :target: https://github.com/charmplusplus/charm4py/actions/workflows/charm4py.yml\n\n.. image:: https://readthedocs.org/projects/charm4py/badge/?version=latest\n       :target: https://charm4py.readthedocs.io/\n\n.. image:: https://img.shields.io/pypi/v/charm4py.svg\n       :target: https://pypi.python.org/pypi/charm4py/\n\n\nCharm4py (Charm++ for Python *-formerly CharmPy-*) is a distributed computing and\nparallel programming framework for Python, for the productive development of fast,\nparallel and scalable applications.\nIt is built on top of `Charm++`_, a C++ adaptive runtime system that has seen\nextensive use in the scientific and high-performance computing (HPC) communities\nacross many disciplines, and has been used to develop applications that run on a\nwide range of devices: from small multi-core devices up to the largest supercomputers.\n\nPlease see the Documentation_ for more information.\n\nShort Example\n-------------\n\nThe following computes Pi in parallel, using any number of machines and processors:\n\n.. code-block:: python\n\n    from charm4py import charm, Chare, Group, Reducer, Future\n    from math import pi\n    import time\n\n    class Worker(Chare):\n\n        def work(self, n_steps, pi_future):\n            h = 1.0 / n_steps\n            s = 0.0\n            for i in range(self.thisIndex, n_steps, charm.numPes()):\n                x = h * (i + 0.5)\n                s += 4.0 / (1.0 + x**2)\n            # perform a reduction among members of the group, sending the result to the future\n            self.reduce(pi_future, s * h, Reducer.sum)\n\n    def main(args):\n        n_steps = 1000\n        if len(args) \u003e 1:\n            n_steps = int(args[1])\n        mypi = Future()\n        workers = Group(Worker)  # create one instance of Worker on every processor\n        t0 = time.time()\n        workers.work(n_steps, mypi)  # invoke 'work' method on every worker\n        print('Approximated value of pi is:', mypi.get(),  # 'get' blocks until result arrives\n              'Error is', abs(mypi.get() - pi), 'Elapsed time=', time.time() - t0)\n        exit()\n\n    charm.start(main)\n\n\nThis is a simple example and demonstrates only a few features of Charm4py. Some things to note\nfrom this example:\n\n- *Chares* (pronounced chars) are distributed Python objects.\n- A *Group* is a type of distributed collection where one instance of the specified\n  chare type is created on each processor.\n- Remote method invocation in Charm4py is *asynchronous*.\n\nIn this example, there is only one chare per processor, but multiple chares (of the same\nor different type) can exist on any given processor, which can bring flexibility and also performance\nbenefits (like dynamic load balancing). Please refer to the documentation_ for more information.\n\n\nContact\n-------\n\nWe would like feedback from the community. If you have feature suggestions,\nsupport questions or general comments, please visit the repository's `discussion page`_\nor email us at \u003ccharm@cs.illinois.edu\u003e.\n\nMain author at \u003cjjgalvez@illinois.edu\u003e\n\n\n.. _Charm++: https://github.com/charmplusplus/charm\n\n.. _Documentation: https://charm4py.readthedocs.io\n\n.. _discussion page: https://github.com/charmplusplus/charm4py/discussions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharmplusplus%2Fcharm4py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharmplusplus%2Fcharm4py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharmplusplus%2Fcharm4py/lists"}