{"id":21833549,"url":"https://github.com/pratikvn/schwarz-lib","last_synced_at":"2025-04-14T07:52:13.364Z","repository":{"id":121219803,"uuid":"212341436","full_name":"pratikvn/schwarz-lib","owner":"pratikvn","description":"Repository for testing asynchronous schwarz methods.","archived":false,"fork":false,"pushed_at":"2021-08-15T18:41:04.000Z","size":28065,"stargazers_count":5,"open_issues_count":13,"forks_count":3,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-03-27T21:38:38.796Z","etag":null,"topics":["asynchronous","cuda","domain-decomposition","ginkgo","schwarz"],"latest_commit_sha":null,"homepage":"https://pratikvn.github.io/schwarz-lib/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pratikvn.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-02T12:54:16.000Z","updated_at":"2023-04-06T04:49:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"77b51091-1ab8-4573-a936-df21ed99adf0","html_url":"https://github.com/pratikvn/schwarz-lib","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratikvn%2Fschwarz-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratikvn%2Fschwarz-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratikvn%2Fschwarz-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pratikvn%2Fschwarz-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pratikvn","download_url":"https://codeload.github.com/pratikvn/schwarz-lib/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248844076,"owners_count":21170486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","cuda","domain-decomposition","ginkgo","schwarz"],"created_at":"2024-11-27T19:32:01.380Z","updated_at":"2025-04-14T07:52:13.348Z","avatar_url":"https://github.com/pratikvn.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Schwarz Library\n-------------------\n\n[![Build status](https://github.com/pratikvn/schwarz-lib/workflows/Build/badge.svg)](https://github.com/pratikvn/schwarz-lib/actions?query=workflow%3ABuild-status)\n[![Documentation](https://github.com/pratikvn/schwarz-lib/workflows/Build-doc/badge.svg?branch=develop)](https://pratikvn.github.io/schwarz-lib/doc/develop/index.html)\n\nPerformance results\n-------------------\n1. [Paper in IJHPCA](https://journals.sagepub.com/doi/10.1177/1094342020946814); [Alternative arXiv version](https://arxiv.org/abs/2003.05361)\n2. [Two stage update](https://ieeexplore.ieee.org/document/9308758)\n\n\n## Required components\n\nThe required components include:\n1. Ginkgo: The Ginkgo library is needed. It needs to be installed and preferably the installation path\n   provided as an environment variable in `Ginkgo_DIR` variable.\n2. MPI: As multiple nodes and a domain decomposition is used, an MPI implementation is necessary.\n\n## Quick Install\n\n### Building Schwarz-Lib \n\nTo build Schwarz-Lib, you can use the standard CMake procedure. \n\n```sh\nmkdir build; cd build\ncmake -G \"Unix Makefiles\" .. \u0026\u0026 make\n```\n\nBy default, `SCHWARZ_BUILD_BENCHMARKING` is enabled. This allows you to quickly run an example with the timings if needed. For a detailed list of options available see the [Benchmarking page](./benchmarking/BENCHMARKING.md).\n\nFor more CMake options please refer to the [Installation page](./INSTALL.md)\n\n\n\n## Currently implemented features\n\n1. Executor paradigm:\n+ [x] GPU.\n+ [x] OpenMP.\n+ [ ] Single rank per node and threading in one node.\n\n1. Factorization paradigm:\n  + [x] CHOLMOD.\n  + [x] UMFPACK.\n\n2. Solving paradigm:\n  * Direct:\n  + [x] Ginkgo.\n  + [x] CHOLMOD.\n  + [x] UMFPACK.\n  * Iterative:\n  + [x] Ginkgo.\n  + [ ] deal.ii.\n\n3. Partitioning paradigm:\n+ [x] METIS.\n+ [x] Regular, 1D.\n+ [x] Regular, 2D.\n+ [ ] Zoltan.\n\n\n4. Convergence check:\n+ [x] Centralized, tree based convergence (Yamazaki 2019).\n+ [x] Decentralized, leader election based (Bahi 2005).\n\n5. Communication paradigm.\n+ [x] Onesided.\n+ [x] Twosided.\n+ [ ] Event based.\n\n5. Communication strategies.\n+ [x] Remote comm strategies: \n    + [x] MPI_Put , gathered.\n    + [x] MPI_Put , one by one.\n    + [x] MPI_Get , gathered .\n    + [x] MPI_Get , one by one.\n+ [x] Lock strategies: MPI_Win_lock / MPI_Win_lock_all .\n    + [x] Lock all and unlock all.\n    + [x] Lock local and unlock local.\n+ [x] Flush strategies: MPI_Win_flush / MPI_Win_flush_local .\n    + [x] Flush all.\n    + [x] Flush local.\n\n6. Schwarz problem type.\n+ [x] RAS.\n+ [ ] O-RAS.\n\n\nAny of the implemented features can be permuted and tested.\n\n## Known Issues\n\n1. On Summit, the Spectrum MPI seems to have a bug with using `MPI_Put` with GPU buffers. `MPI_Get` works as expected. This bug has also been confirmed with an external micro-benchmarking library, [OSU Micro-Benchmarks](https://github.com/pratikvn/osu-bench-personal-fork).\n\n\nFor installing and building, please check the [Installation page](./INSTALL.md)\n\n\nCredits: This code (written in C++, with additions and improvements) was inspired by the code from Ichitaro Yamazaki, ICL, UTK.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratikvn%2Fschwarz-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpratikvn%2Fschwarz-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratikvn%2Fschwarz-lib/lists"}