Skip to content

Releases: ddemidov/amgcl

1.4.5

11 Jul 08:12
dde264f

Choose a tag to compare

1.4.4

27 Oct 18:52
42ee9da

Choose a tag to compare

Minor fixes

1.4.3

31 Mar 07:07

Choose a tag to compare

  • Fast rebuild of the MPI AMG hierarchy in case the system matrix structure has not changed.
  • Support block valued backends with smoothed aggregation coarsening when user provides near nullspace components. This is implemented with help of hybrid backends, relaxation::as_block, and coarsening::as_scalar. See the "Using near null-space components" tutorial for more details.
  • Implement backend::reinterpret_as_rhs() helper function for easy reinterpretation of scalar vectors as block-valued.
  • Support complex types in MPI solvers.
  • Minor improvements and bug fixes.

1.4.2

21 Jul 08:44
681bfc7

Choose a tag to compare

  • Improved documentation
  • Partial rebuild of the AMG hierarchy using new matrix, and reusing
    prolongation and restriction operators.
  • Allow to use null-space vectors with MPI aggregation
  • Implemented ILUP(k). The non-zero pattern of A^k is used to determine
    the fill-in, which may be beneficial for non-symmetric systems
  • Implementation of experimental deflated solver
  • prm.solver.ns_search=true ignores trivial solution for zero RHS.
    Useful in search of the null-space vectors of the system
  • Published Docker image with compiled examples
  • Removed SIMPLE preconditioner, which may be replaced with SchurPC
  • Minor fixes and improvements.

1.4.0

26 Nov 12:26
5f8d497

Choose a tag to compare

  • The codebase uses C++11 standard.
  • amgcl::mpi::amg preconditioner is implemented! This works much better than subdomain deflation which is now considered deprecated. See examples/mpi/mpi_amg.cpp and some benchmarks in https://doi.org/10.1134/S1995080219050056 (https://arxiv.org/abs/1811.05704).
  • Added wrappers for Scotch and ParMetis partitioning libraries.
  • Runtime interface has been refactored. Instead of doing
    typedef amgcl::make_solver<
        amgcl::runtime::amg<Backend>,
        amgcl::runtime::iterative_solver<Backend>
        > Solver;
    one should now
    typedef amgcl::make_solver<
        amgcl::amg<
            Backend,
            amgcl::runtime::coarsening::wrapper,
            amgcl::runtime::relaxation::wrapper
            >,
        amgcl::runtime::solver::wrapper<Backend>
        > Solver;
    This allows to reuse the same amgcl::amg implementation both for compile-time and runtime interfaces and greatly reduces compilation time and memory requirements for the library.
  • Got rid of as many Boost dependencies as possible in favor of C++11. Currently, only the runtime interface depends on Boost , as it uses boost::property_tree::ptree for defining runtime parameters.
    It should be possible to use the compile-time interface completely Boost-free. This also means that one should replace all uses of boost::tie and boost::make_tuple in amgcl-related code with std::tie and std::make_tuple. For example:
    Solver solve(std::tie(n, ptr, col, val));
    std::tie(iters, error) = solve(f, x);
  • Provide amgcl::backend::bytes() function that returns (sometimes approximately) the amount of memory allocated for an amgcl object. std::string amgcl::backend::human_readable_memory(size_t) converts bytes to a human-readable size string (e.g. 1024 is converted to 1 K).
  • Support for mixed-precision computations (where iterative solver and preconditioner use different precisions).
  • MPI versions of CPR preconditioners. Support for statically-sized matrices in global preconditioners of CPR. Support for mixed-precision in global and pressure-specific parts of CPR.
  • Helper functions for the computation of rigid body modes (for use as near null space vectors in structural problems) from 2D or 3D coordinates.
  • Improvements for the Schur pressure correction preconditioner.
  • Added Richardson and PreOnly (only apply the preconditioner once) iterative solvers. The latter is intended for use as a nested solver in composite preconditioners, such as Schur pressure correction.
  • epetra_map was moved to the adapter namespace.
  • Eigen backend was split into adapter and backend part.
  • amgcl::make_scaling_solver has been replaced with amgcl::scaled_problem adapter.
  • Added tutorials to the documentation.
  • Many bug fixes and minor improvements.

1.3.99

09 Nov 08:35
b901a26

Choose a tag to compare

1.3.99 Pre-release
Pre-release
  • The code base uses C++11 standard.
  • amgcl::mpi::amg preconditioner is implemented! This works much better than subdomain deflation which is now considered deprecated. See examples/mpi/mpi_amg.cpp and some benchmarks in https://doi.org/10.1134/S1995080219050056 (https://arxiv.org/abs/1811.05704).
  • Added wrappers for Scotch and ParMetis partitioning libraries.
  • Runtime interface has been refactored. Instead of doing
    typedef amgcl::make_solver<
        amgcl::runtime::amg<Backend>,
        amgcl::runtime::iterative_solver<Backend>
        > Solver;
    one should now
    typedef amgcl::make_solver<
        amgcl::amg<
            Backend,
            amgcl::runtime::coarsening::wrapper,
            amgcl::runtime::relaxation::wrapper
            >,
        amgcl::runtime::solver::wrapper<Backend>
        > Solver;
    This allows to reuse the same amgcl::amg implementation both for compile-time and runtime interfaces, and greately reduces compilation time and memory requirements for the library.
  • Got rid of as many Boost dependencies as possible in favor of C++11. Currently , only the runtime interface depends on Boost , as it uses boost::property_tree::ptree for defining runtime parameters.
    It should be possible to use the compile-time interface completely Boost-free. This also means that one should replace all uses of boost::tie and boost::make_tuple in amgcl-related code with std::tie and std::make_tuple. For example:
    Solver solve(std::tie(n, ptr, col, val));
    std::tie(iters, error) = solve(f, x);
  • Provide amgcl::backend::bytes() function that returns (sometimes approximately) the amount of memory allocated for an amgcl object. std::string amgcl::backend::human_readable_memory(size_t) converts bytes to a human-readable size string (e.g. 1024 is converted to 1 K).
  • Initial support for mixed-precision computations (where iterative solver and preconditioner use different precisions).
  • MPI versions of CPR preconditioners. Support for statically-sized matrices in global preconditioners of CPR. Support for mixed precision in global and pressure-specific parts of CPR.
  • epetra_map was moved to adapter namespace.
  • Eigen backend was split into adapter and backend part.
  • amgcl::make_scaling_solver has been replaced with amgcl::scaled_problem adapter.

This is marked as pre-release, because the documentation still needs to be updated.

1.2.0

10 May 06:23
1.2.0
a20eeb5

Choose a tag to compare

  • Change default value of smoothed_aggregation.aggr.eps_strong
    from 0 to 0.08. This should work better for anisotropic cases.
  • Pressure mask may be set with a pattern in Schur pressure correction
    preconditioner.
  • When using async_setup, allow to exit initialization thread early in
    case the solution has already converged.
  • Stable implementation of inner product in OpenMP backend. This makes
    the solution deterministic for a fixed number of OpenMP threads.
  • Support non-zero initial condition in BiCGStab(L).
  • Switch implementation of BiCGStab(L) to Fokkema's version [1].
  • Support both left and right preconditioning in BiCGStab, BiCGStab(L),
    GMGES, CG.
  • Improve performance/scalability of mpi::subdomain_deflation.
  • Minor bug fixes and improvements.

[1] Fokkema, Diederik R. Enhanced implementation of BiCGstab (l) for
solving linear systems of equations. Universiteit Utrecht.
Mathematisch Instituut, 1996.

1.1.0

21 Oct 15:30

Choose a tag to compare

  • Improve profiling: allow users to configure profiling operations.
  • Implement adapter::reorder for matrices and vectors. Allows to
    transparently apply Cuthill-McKee reordering to the system matrix and
    RHS before solution.
  • Improve performance of Schur pressure correction preconditioner by
    (optionally) approximating inverse of Kuu matrix with its inverted
    diagonal.
  • Use power iteration to estimate spectral radius in smoothed_aggregation.
    This improves convergence rate at the cost of setup time.
    The total time is usually improved, but may suffer on GPGPU backends.
  • Adding IDR(s) iterative solver (http://ta.twi.tudelft.nl/nw/users/gijzen/IDR.html).
  • Improve performance and scalability of mpi::subdomain_deflation
    preconditioner.
  • Support matrix-free solution with mpi::subdomain_deflation.
  • Provide amgcl::put(ptree p, string s) where s has key=value format.
    This makes parsing of command line parameters easier.
  • Add shared and distributed memory benchmarks to the documentation.
  • Add Clang and OSX tests on Travis-CI.
  • Minor bug fixes and improvements.

1.0.0

16 May 15:52

Choose a tag to compare

  • Implemented OpenMP versions of incomplete LU smoothers (ilu0, iluk, ilut), and got rid of now obsolete parallel_ilu0 smoother. Parallel algorithm is based on level scheduling approach and is automatically selected when there are four or more OpenMP threads.
  • Reimplemented multicolor Gauss-Seidel smoother, merged the new implementation with gauss_seidel, and got rid of obsolete multicolor_gauss_seidel smoother. Parallel algorithm is based on level scheduling approach and is automatically selected when there are four or more OpenMP threads.
  • Code cleanup, minor improvements and bug fixes.

0.9.1

04 May 08:00

Choose a tag to compare

Mostly a bug fix release.

  • Fixed a bug in matrix-matrix product.
  • Allow to disable selected components from runtime interface to reduce compilation overhead (see #45).