[dune-pdelab] AMG backend for non-overlapping grids
Steffen Müthing
steffen.muething at iwr.uni-heidelberg.de
Mon May 26 17:12:05 CEST 2014
Hi Markus,
Am 26.05.2014 um 13:06 schrieb Markus Blatt <markus at dr-blatt.de>:
> Hi,
>
> I am quite confused by the current status of the AMG solver backend
> for non-overlapping grids.
Well, there have been quite some changes to that support...
>
> I recall that Rebecca had to change the matrix entries and sparsity
> pattern to make sure for every dof, that is of the local part of the
> disjoint partitioning of the dofs, the corresponding matrix row
> contains the full global information, i.e. all connections to
> neighboring dofs with the value as in the sequential/serial case
> Only in this case the AMG worked at all for non-overlapping grids.
Yes, you need to extend the pattern with information about DOFs from
neighboring ranks in some cases.
>
> I am having a hard time finding this piece of code
> and am under the impression that it (MatPatternExchange,
> VertexExchanger) was removed with commit
> fd7285a5519b1b80f045559d42b120802b60561c by Steffen on October 30,
> 2012. Unfortunately, there is no explanation about this in the commit message.
Well, it says that it was replaced by BorderDOFExchanger in fd7285a551 ;-)
BorderDOFExchanger is a more general implementation of the concepts introduced
in MatPatternExchange and VertexExchanger that also works for different spaces
than P1 and which is integrated into the GridOperator. The main reason for this
change were
1) support for different discretizations (not relevant for AMG, but good to have in
general).
2) In the original code, the extended matrix with the enlarged pattern was constructed
after the fact, i.e. after the call to jacobian(). This was problematic e.g. for Rebecca,
because that way, you actually needed space for two matrices at the same time and
also paid a huge time penalty for shifting around all that memory. By integrating the
BorderDOFExchanger into the GridOperator and the assembly process, the extended
pattern is now constructed during the original call to the PatternEngine.
Finally, after discussing the current implementation with Rebecca we decided to modify
the nonoverlapping function spaces to live only on the InteriorBorder_Partition, i.e. in the
new implementation the function spaces do not contain the ghost entities anymore. That
way, you can substantially improve the surface-to-volume ration in parallel computations.
>
> If removing this was not a mistake, can someone please explain me, why
> my AMG should work with an additive representation of the matrix?
> Somehow I fail to see how this can be the case.
The matrix is made consistent by calling _grid_operator.make_consistent(A) in the
solver backend, which directly replaces the old code with the VertexExchanger that is
deleted in the diffs in fd7285a551. You have to be a little careful when porting old code;
you need to pass the correct GridView and a different OrderingTag to the GridFunctionSpace.
Take a look at dune/pdelab/test/testnonoverlapping.cc for an example.
Steffen
>
> Markus
>
>
> --
> Do you need more support with DUNE or HPC in general?
>
> Dr. Markus Blatt - HPC-Simulation-Software & Services http://www.dr-blatt.de
> Hans-Bunte-Str. 8-10, 69123 Heidelberg, Germany
> Tel.: +49 (0) 160 97590858
> _______________________________________________
> dune-pdelab mailing list
> dune-pdelab at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-pdelab
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <https://lists.dune-project.org/pipermail/dune-pdelab/attachments/20140526/995241eb/attachment.sig>
More information about the dune-pdelab
mailing list