Skip to content

Releases: pratikvn/schwarz-lib

Release 1.0

19 Aug 17:44
581e6c9
Compare
Choose a tag to compare

The Schwarz lib team is proud to present the first release (Release v1.0) of schwarz-lib. This library provides the Schwarz domain decomposition methods for solving linear systems with an improved asynchronous version that removes the synchronizations bottlenecks from the solver, thereby making it scalable. The various features provided are:

  1. Interfacing with the Ginkgo library (https://github.com/ginkgo-project/ginkgo), providing the user with the ability to run on CUDA and AMD GPUs and other architectures as provided by Ginkgo. Efficient kernels from Ginkgo enhance the performance of the global solver.
  2. Interfacing with deal.ii (https://github.com/dealii/dealii), providing the user with the ability to solve PDE's using a finite element formulation.
  3. Both direct and iterative local solves for the subdomains, with all sophisticated preconditioners available within Ginkgo.
  4. Different partitioning strategies, such as METIS and some regular partitioning schemes.
  5. Ability to experiment with various one-sided communication parameters.
  6. A mixed precision version which communicates data in lower precision and computes is higher precision.

Schwarz Library v0.1

20 Mar 13:49
8baee6a
Compare
Choose a tag to compare
Schwarz Library v0.1 Pre-release
Pre-release

The schwarz-lib is a library that showcases and enables experimentation with Schwarz methods. See a preprint of the paper with experiments on arXiv

Features


  1. Executor paradigm:
  • GPU.
  • OpenMP.
  • Single rank per node and threading in one node.
  1. Solving paradigm:
  • Direct:
  • Ginkgo.
  • CHOLMOD.
  • Iterative:
  • Ginkgo.
  • deal.ii.
  1. Partitioning paradigm:
  • METIS.
  • Regular, 1D.
  • Regular, 2D.
  • Zoltan.
  1. Convergence check:
  • Centralized, tree based convergence (Yamazaki 2019).
  • Decentralized, leader election based (Bahi 2005).
  1. Communication paradigm.
  • Onesided.
  • Twosided.
  • Event based.
  1. Communication strategies.
  • Remote comm strategies:
    • MPI_Put , gathered.
    • MPI_Put , one by one.
    • MPI_Get , gathered .
    • MPI_Get , one by one.
  • Lock strategies: MPI_Win_lock / MPI_Win_lock_all .
    • Lock all and unlock all.
    • Lock local and unlock local.
  • Flush strategies: MPI_Win_flush / MPI_Win_flush_local .
    • Flush all.
    • Flush local.
  1. Schwarz problem type.
  • RAS.
  • O-RAS.

Any of the implemented features can be permuted and tested.

Known Issues

  1. 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.