[petsc-dev] Block system

Jed Brown jed at jedbrown.org
Mon Feb 13 10:46:46 CST 2017


Pierre Jolivet <Pierre.Jolivet at enseeiht.fr> writes:

> On Mon, 13 Feb 2017 17:07:21 +0100, Jed Brown wrote:
>> Pierre Jolivet <Pierre.Jolivet at enseeiht.fr> writes:
>>
>>> Hello,
>>> Given this block matrix:
>>> A = [A11,A12,A13,A14;
>>>       A21,A22,A23,A24;
>>>       A31,A32,A33,A34;
>>>       A41,A42,A43,A44];
>>> It is trivial to precondition Ax = b with M^-1 = diag(A11^-1, 
>>> A22^-1,
>>> A33^-1, A44^-1);
>>> My application requires a slightly fancier preconditionner which 
>>> should
>>> be M^-1 = diag(inv([A11,A12;A21,A22]),inv([A33,A34;A43,A44]));
>>> I'm not sure what is the right tool for this.
>>> I've stopped at a 4x4 block matrix, but at scale I have a matrix 
>>> with
>>> few thousands x few thousands blocks (still with the nested 2 x 2 
>>> block
>>> structure).
>>
>> Are all of these blocks distributed on your communicator or do they 
>> have
>> some locality?  PCFieldSplit is intended for problems where the 
>> blocks
>
> All the blocks are distributed indeed.

Do you mean that each block is distributed?

>> are all distributed and solving them sequentially is acceptable.  The
>> other limiting case for an additive preconditioner like you have 
>> above
>> is block Jacobi (perhaps with multi-process subdomains or multiple
>> subdomains per process; such decompositions are supported).
>
> Yes, that is basically what I need, block Jacobi with subdomains 
> defined as aggregation of multiple processes, but I don't know how to do 
> this and thought of using an additive FieldSplit. Could you give me a 
> pointer to such a distribution, please?

The easiest is PCBJacobiSetTotalBlocks (-pc_bjacobi_blocks).  That gets
you this kind of method

$ mpiexec -n 4 ./ex5 -pc_bjacobi_blocks 2 -sub_pc_type jacobi -snes_view
SNES Object: 4 MPI processes
  type: newtonls
  maximum iterations=50, maximum function evaluations=10000
  tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
  total number of linear solver iterations=4
  total number of function evaluations=5
  norm schedule ALWAYS
  SNESLineSearch Object: 4 MPI processes
    type: bt
      interpolation: cubic
      alpha=1.000000e-04
    maxstep=1.000000e+08, minlambda=1.000000e-12
    tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08
    maximum iterations=40
  KSP Object: 4 MPI processes
    type: gmres
      GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
      GMRES: happy breakdown tolerance 1e-30
    maximum iterations=10000, initial guess is zero
    tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
    left preconditioning
    using PRECONDITIONED norm type for convergence test
  PC Object: 4 MPI processes
    type: bjacobi
      block Jacobi: number of blocks = 2
      Local solve is same for all blocks, in the following KSP and PC objects:
    KSP Object: (sub_) 2 MPI processes
      type: gmres
        GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
        GMRES: happy breakdown tolerance 1e-30
      maximum iterations=10000, initial guess is zero
      tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
      left preconditioning
      using PRECONDITIONED norm type for convergence test
    PC Object: (sub_) 2 MPI processes
      type: jacobi
      linear system matrix = precond matrix:
      Mat Object: 2 MPI processes
        type: mpiaij
        rows=8, cols=8
        total: nonzeros=28, allocated nonzeros=28
        total number of mallocs used during MatSetValues calls =0
          not using I-node (on process 0) routines
    linear system matrix = precond matrix:
    Mat Object: 4 MPI processes
      type: mpiaij
      rows=16, cols=16
      total: nonzeros=64, allocated nonzeros=64
      total number of mallocs used during MatSetValues calls =0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170213/c8df0415/attachment.sig>


More information about the petsc-dev mailing list