<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Romain:</div><div class="gmail_quote">Do you mean small sparse sequential 200 by 200 matrices?</div><div class="gmail_quote">Petsc LU might be better than external LU packages because it implements simple LU algorithm and we took good care on data accesing (I've heard same observations). You may try 'qmd' matrix ordering for power grid simulation. </div><div class="gmail_quote">I do not have experience on <span style="font-size:12.8000001907349px">SuiteSparse. Testing MUMPS is worth it as well.</span></div><div class="gmail_quote"><span style="font-size:12.8000001907349px"><br></span></div><div class="gmail_quote"><span style="font-size:12.8000001907349px">Hong</span></div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi<br>
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?<br>
Thank you,<br>
Romain<br>
<div class="HOEnZb"><div class="h5"><br>
-----Original Message-----<br>
From: Barry Smith [mailto:<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>]<br>
Sent: vrijdag 14 augustus 2015 17:31<br>
To: Romain Thomas<br>
Cc: Matthew Knepley; <a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a><br>
Subject: Re: [petsc-users] petsc KLU<br>
<br>
<br>
   You should call<br>
<br>
    MatGetFactor(mat,MATSOLVERKLU,MAT_FACTOR_LU,&fact);<br>
<br>
  then call<br>
<br>
> MatLUFactorNumeric(Mat fact,Mat mat,const MatFactorInfo *info)<br>
> MatLUFactorSymbolic(Mat fact,Mat mat,IS row,IS col,const MatFactorInfo<br>
> *info) MatLUFactor(Mat mat,IS row,IS col,const MatFactorInfo *info)<br>
<br>
   This routines correctly internally call the appropriate MatLUFactorNumeric_KLU() etc for you because you passed MATSOLVERKLU above.<br>
   There is no reason to (and it won't work) to call<br>
<br>
> MatLUFactorNumeric_KLU(Mat F,Mat A,const MatFactorInfo *info)<br>
> MatLUFactorSymbolic_KLU(Mat F,Mat A,IS r,IS c,const MatFactorInfo<br>
> *info) MatGetFactor_seqaij_klu(Mat A,MatFactorType ftype,Mat *F)<br>
<br>
directly.<br>
<br>
  Barry<br>
<br>
> On Aug 14, 2015, at 10:07 AM, Romain Thomas <<a href="mailto:R.Thomas@tudelft.nl">R.Thomas@tudelft.nl</a>> wrote:<br>
><br>
> Hi,<br>
> Thank you for your answer.<br>
> 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).<br>
> Best regards,<br>
> Romain<br>
><br>
><br>
> From: Matthew Knepley [mailto:<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>]<br>
> Sent: vrijdag 14 augustus 2015 16:41<br>
> To: Romain Thomas<br>
> Cc: <a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a><br>
> Subject: Re: [petsc-users] petsc KLU<br>
><br>
> On Fri, Aug 14, 2015 at 9:23 AM, Romain Thomas <<a href="mailto:R.Thomas@tudelft.nl">R.Thomas@tudelft.nl</a>> wrote:<br>
> Dear PETSc users,<br>
><br>
> I would like to know if I can replace the following functions<br>
><br>
> MatLUFactorNumeric(Mat fact,Mat mat,const MatFactorInfo *info)<br>
> MatLUFactorSymbolic(Mat fact,Mat mat,IS row,IS col,const MatFactorInfo<br>
> *info) MatLUFactor(Mat mat,IS row,IS col,const MatFactorInfo *info)<br>
><br>
> by<br>
><br>
> MatLUFactorNumeric_KLU(Mat F,Mat A,const MatFactorInfo *info)<br>
> MatLUFactorSymbolic_KLU(Mat F,Mat A,IS r,IS c,const MatFactorInfo<br>
> *info) MatGetFactor_seqaij_klu(Mat A,MatFactorType ftype,Mat *F)<br>
><br>
> in my code for the simulation of electrical power systems? (I<br>
> installed the package SuiteSparse)<br>
><br>
> Why would you do that? It already works with the former code. In fact,<br>
> you should really just use<br>
><br>
>   KSPCreate(comm, &ksp)<br>
>   KSPSetOperator(ksp, A, A);<br>
>   KSPSetFromOptions(ksp);<br>
>   KSPSolve(ksp, b, x);<br>
><br>
> and then give the options<br>
><br>
>   -ksp_type preonly -pc_type lu -pc_mat_factor_package suitesparse<br>
><br>
> This is no advantage to using the Factor language since subsequent<br>
> calls to<br>
> KSPSolve() will not refactor.<br>
><br>
>    Matt<br>
><br>
> Thank you,<br>
> Best regards,<br>
> Romain<br>
><br>
><br>
><br>
> --<br>
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
> -- Norbert Wiener<br>
<br>
</div></div></blockquote></div><br></div></div>