[petsc-users] Solving a sequence of linear systems stored on disk with MUMPS
Thibaut Appel
t.appel17 at imperial.ac.uk
Tue Jul 23 11:13:47 CDT 2019
Hi Hong,
A_m would typically have a leading dimension between 6e5 and 1.5e6, with
roughly 100 non-zero entries per row in average.
Don't get me wrong: performing ONE LU factorization is fine for the
memory. It's just that I need to keep track, and store M x LU
factorizations which obviously do not fit in RAM.
I thought that with MUMPS, each process is able to store its part of the
LU factors? Anyway, I do not care about the non-scalability, I know
saving/reading from disk is long. As long as I solve the systems in
parallel it's fine.
> If A_m is not huge, you can create one KSP, with matrix
> A = diag(A_m).
> Keep LU factor of A = diag( LU factor of A_m), then solve A x = b
> repeatedly with changing b.
> You can use '-pc_type bjacobi -pc_bjacobi_blocks M -sub_pc_type lu'
> Hong
>
This is likely to fail as my matrices are ill-conditioned.
Thibaut
On 23/07/2019 17:02, Zhang, Hong wrote:
> Thibaut :
> How large is your A_m? Write/Read to/from the disc is non-scalable. It
> would be the last resort when matrix factor is too large for the
> memory. PETSc/mumps interface does not support this feature.
>
> If A_m is not huge, you can create one KSP, with matrix
> A = diag(A_m).
> Keep LU factor of A = diag( LU factor of A_m), then solve A x = b
> repeatedly with changing b.
> You can use '-pc_type bjacobi -pc_bjacobi_blocks M -sub_pc_type lu'
> Hong
>
> Dear PETSc users,
>
> I need to solve several linear systems successively, with LU
> factorization, as part of an iterative process in my Fortran
> application
> code.
>
> The process would solve M systems (A_m)(x_m,i) = (b_m,i) for m=1,M at
> each iteration i, but computing the LU factorization of A_m only once.
> The RHSs (b_m,i+1) are computed from all the different (x_m,i) and
> all
> depend upon each other.
>
> The way I envisage to perform that is to use MUMPS to compute,
> successively, each of the LU factorizations (m) in parallel and store
> the factors on disk, creating/assembling/destroying the matrices
> A_m on
> the go.
> Then whenever needed, read the factors in parallel to solve the
> systems.
> Since version 5.2, MUMPS has a save/restore feature that allows that,
> see http://mumps.enseeiht.fr/doc/userguide_5.2.1.pdf
> <http://mumps.enseeiht.fr/doc/userguide_5.2.1.pdf> p.20, 24 and 58.
>
> In its current state, the PETSc/MUMPS interface does not incorporate
> that feature. I'm an advanced Fortran programmer but not in C so I
> don't
> think I would do an amazing job having a go inside
> src/mat/impls/aij/mpi/mumps/mumps.c.
>
> I was picturing something like creating as many KSP objects as linear
> systems to be solved, with some sort of flag to force the storage
> of LU
> factors on disk after the first call to KSPSolve. Then keep calling
> KSPSolve as many times as needed.
>
> Would you support such a feature?
>
> Thanks for your support,
>
> Thibaut
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190723/fe8ae6a3/attachment.html>
More information about the petsc-users
mailing list