Skip to content

1.3.99

Pre-release
Pre-release
Compare
Choose a tag to compare
@ddemidov ddemidov released this 09 Nov 08:35
· 257 commits to master since this release
b901a26
  • 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.