amgcl
amgcl copied to clipboard
Documentation/listing of parameters for MPI AMG solve
It seems like the parameter names used to control AMG and solver settings are pretty different for the MPI vs. non-MPI versions of the runtime AMGCL interface. For example, in examples/mpi/solve_mm_mpi.cpp
, we have
prm.put("local.coarsening.type", coarsening);
prm.put("local.relax.type", relaxation);
prm.put("isolver.type", iterative_solver);
but these parameters like local
and isolver
don't exist in the non-MPI runtime interface, for example in examples/call_lib.cpp
there is
amgcl_params_sets(prm, "precond.relax.type", "spai0");
amgcl_params_sets(prm, "solver.type", "bicgstabl");
amgcl_params_seti(prm, "solver.L", 1);
amgcl_params_seti(prm, "solver.maxiter", 100);
I can guess some mappings from non-MPI to MPI, like
solver.type -> isolver.type
precond.relax.type -> local.relax.type (but is there also global relax type?)
but in general I'm not sure of all the different parameters that can be set, especially in the MPI case which is what I'm most interested in. The docs don't really seem to have any comprehensive list of all the possible parameters names and descriptions. Is it possible to put together a quick list of the possible parameters for the runtime MPI solver interface (especially with AMG), and maybe how those map to the similar parameters in the non-MPI interface?
Or, even informally like in this issue, can you suggest what are the main parameters I should experiment with in the MPI case in order to try to reduce the iteration count / solution time of my system?
Happy to help in any way I can. Thank you in advance!
examples/mpi/solve_mm_mpi.cpp
uses subdomain deflation preconditioner (http://ta.twi.tudelft.nl/users/vuik/pub_it_def.html, amgcl/mpi/subdomain_deflation.hpp), hence the difference in parameters. examples/mpi/mpi_amg.cpp
is the one using amgcl::mpi::amg
, which has a set of parameters closely resembling that of the serial amgcl::amg
.
Any component in amgcl defines its own set of parameters (as a params
subclass), so you can peek at possible parameters in the corresponding header file. For example, here is the definition of amgcl::mpi::amg::params
.
Or, even informally like in this issue, can you suggest what are the main parameters I should experiment with in the MPI case in order to try to reduce the iteration count / solution time of my system?
This mostly depends on the system you are solving.