[Dune] AMG and performance
Arne Rekdal
arne at stud.ntnu.no
Sun Apr 26 16:50:48 CEST 2009
Hi all,
I am trying to solve the linear system of equations,
S r = b,
with Dune::AMG and Dune::CGSolver. I have compared the computation
time with Fraunhofer's SAMG solver. SAMG uses approx. one third of the
computation time independent from the problem size, but the memory
usage of SAMG is twice as high. I am wondering if you have some tips
of how I can improve the performance of the Dune implementation. I am
currently using the ILU0 as smoother (relaxfactor=0.8), and the code
compiled with -O3 option. Any suggestions would be greatly appreciated.
Best regards
Arne Rekdal
---------------------------------------------------------------
From my code:
---------------------------------------------------------------
Matrix S; // BCRSMatrix
Vector r, b; // BlockVector
typedef Dune::MatrixAdapter<Matrix,Vector,Vector> Operator;
Operator op(S);
typedef
Dune
::Amg
::CoarsenCriterion
<Dune::Amg::SymmetricCriterion<Matrix,Dune::Amg::FirstDiagonal> >
Criterion;
typedef Dune::SeqILU0<Matrix,Vector,Vector> Smoother;
typedef Dune::Amg::SmootherTraits<Smoother>::Arguments SmootherArgs;
typedef Dune::Amg::AMG<Operator,Vector,Smoother> AMG;
SmootherArgs smootherArgs;
smootherArgs.relaxationFactor=relax; // relax = 0.8
Criterion criterion;
AMG prec(op, criterion, smootherArgs, 1, 1, 1, false);
double reduction=1e-8;
int maxit=S.N();
int verbose=0;
Dune::CGSolver<Vector> solver(op,prec,reduction,maxit,verbose);
Dune::InverseOperatorResult res;
solver.apply(r,b,res);
More information about the Dune
mailing list