[petsc-users] petsc KLU
Romain Thomas
R.Thomas at tudelft.nl
Mon Aug 17 09:34:37 CDT 2015
Hi
Thank you for your answer. I was asking help because I find LU factorization 2-3 times faster than KLU. According to my problem size (200*200) and type (power system simulation), I should get almost the same computation time. Is it true to think that? Is the difference of time due to the interface between PETSc and SuiteSparse?
Thank you,
Romain
-----Original Message-----
From: Barry Smith [mailto:bsmith at mcs.anl.gov]
Sent: vrijdag 14 augustus 2015 17:31
To: Romain Thomas
Cc: Matthew Knepley; petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] petsc KLU
You should call
MatGetFactor(mat,MATSOLVERKLU,MAT_FACTOR_LU,&fact);
then call
> MatLUFactorNumeric(Mat fact,Mat mat,const MatFactorInfo *info)
> MatLUFactorSymbolic(Mat fact,Mat mat,IS row,IS col,const MatFactorInfo
> *info) MatLUFactor(Mat mat,IS row,IS col,const MatFactorInfo *info)
This routines correctly internally call the appropriate MatLUFactorNumeric_KLU() etc for you because you passed MATSOLVERKLU above.
There is no reason to (and it won't work) to call
> MatLUFactorNumeric_KLU(Mat F,Mat A,const MatFactorInfo *info)
> MatLUFactorSymbolic_KLU(Mat F,Mat A,IS r,IS c,const MatFactorInfo
> *info) MatGetFactor_seqaij_klu(Mat A,MatFactorType ftype,Mat *F)
directly.
Barry
> On Aug 14, 2015, at 10:07 AM, Romain Thomas <R.Thomas at tudelft.nl> wrote:
>
> Hi,
> Thank you for your answer.
> My problem is a bit more complex. During the simulation (“real time”), I need to upgrade at each time step the matrix A and the MatassemblyBegin and MatassemblyEnd take time and so, in order to avoid these functions, I don’t use ksp or pc. I prefer to use the functions MatLUFactorNumeric, MatLUFactorSymbolic and MatLUFactor. And so, I want to know if there is similar functions for KLU. (I tried for Cholesky and, iLU and it works well).
> Best regards,
> Romain
>
>
> From: Matthew Knepley [mailto:knepley at gmail.com]
> Sent: vrijdag 14 augustus 2015 16:41
> To: Romain Thomas
> Cc: petsc-users at mcs.anl.gov
> Subject: Re: [petsc-users] petsc KLU
>
> On Fri, Aug 14, 2015 at 9:23 AM, Romain Thomas <R.Thomas at tudelft.nl> wrote:
> Dear PETSc users,
>
> I would like to know if I can replace the following functions
>
> MatLUFactorNumeric(Mat fact,Mat mat,const MatFactorInfo *info)
> MatLUFactorSymbolic(Mat fact,Mat mat,IS row,IS col,const MatFactorInfo
> *info) MatLUFactor(Mat mat,IS row,IS col,const MatFactorInfo *info)
>
> by
>
> MatLUFactorNumeric_KLU(Mat F,Mat A,const MatFactorInfo *info)
> MatLUFactorSymbolic_KLU(Mat F,Mat A,IS r,IS c,const MatFactorInfo
> *info) MatGetFactor_seqaij_klu(Mat A,MatFactorType ftype,Mat *F)
>
> in my code for the simulation of electrical power systems? (I
> installed the package SuiteSparse)
>
> Why would you do that? It already works with the former code. In fact,
> you should really just use
>
> KSPCreate(comm, &ksp)
> KSPSetOperator(ksp, A, A);
> KSPSetFromOptions(ksp);
> KSPSolve(ksp, b, x);
>
> and then give the options
>
> -ksp_type preonly -pc_type lu -pc_mat_factor_package suitesparse
>
> This is no advantage to using the Factor language since subsequent
> calls to
> KSPSolve() will not refactor.
>
> Matt
>
> Thank you,
> Best regards,
> Romain
>
>
>
> --
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
More information about the petsc-users
mailing list