<div dir="ltr"><div dir="ltr">Thanks  a lot.  I am transferring  a dense matrix from Julia to Petsc. </div><div>I will check this. </div><div>In addition, could you please show me where is </div><div><br></div><div> Where is the subroutine for the GMRES solver, namely,<br>  ierr=(*KSP->ops->solve)(ksp);  </div><div><br></div><div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Xiaodong Liu, PhD<br>X: Computational Physics Division<br>Los Alamos National Laboratory<br>P.O. Box 1663, <br>Los Alamos, NM 87544<br>505-709-0534<br></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 3, 2020 at 8:21 PM Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Is it possible that Julia is transferring the matrix to PETSc as a dense<br>
matrix (storing the nonzeros) instead of preserving sparsity?  If you<br>
store the zeros, then ILU will be allowed to fill those entries, thereby<br>
becoming LU.<br>
<br>
Xiaodong Liu <<a href="mailto:xliu29@ncsu.edu" target="_blank">xliu29@ncsu.edu</a>> writes:<br>
<br>
> I am trying to use Julia to call Petsc.<br>
> 1) First, I run the built-in example ex2.c<br>
> <a href="https://www.mcs.anl.gov/petsc/petsc-current/src/ksp/pc/examples/tutorials/ex2.c.html" rel="noreferrer" target="_blank">https://www.mcs.anl.gov/petsc/petsc-current/src/ksp/pc/examples/tutorials/ex2.c.html</a><br>
><br>
> For this case,  I tried KSPGMRES , initial zero solution and different PC<br>
> (LU, ILU, ICC, JACOBI). And they work as expected.<br>
><br>
>  75: KSPSetType(ksp,KSPGMRES);<br>
>  76: KSPSetInitialGuessNonzero(ksp,PETSC_FALSE);<br>
>  87: KSPGetPC(ksp,&pc);<br>
>  88: PCSetType(pc,PCICC);<br>
><br>
> 2) Second, I tried to call KSP from Julia using the same matrix and right<br>
> hand side as ex2.c . A wrapper has been written to call Petsc code from<br>
> Julia. After I transfer matrix to from Julia to Petsc, I checked the matrix<br>
> and preconditioner matrix in the context of Petsc. These two matrices are<br>
> right. For no preconditioner,Jacobi precontioner and LU, the residual for<br>
> Julia version is same as that of original Petsc one for every iteration.<br>
> However, for ILU preconditioner, the residual for Julia is alwaysthe same<br>
> as the LU one. This is not expected. For both Julia and original Petsc<br>
> version, I checked the PC type inside the subroutine PCSetType and the<br>
> types are correct, namely ilu.I am trying to dig into the source code to<br>
> check how the preconditioner is interacting with GMRES.<br>
><br>
> Where is the subroutine for the GMRES solver, namely,<br>
>  ierr=(*KSP->ops->solve)(ksp);<br>
><br>
> Or do you have any suggestions?<br>
><br>
> Thanks,<br>
><br>
> Xiaodong Liu, PhD<br>
> X: Computational Physics Division<br>
> Los Alamos National Laboratory<br>
> P.O. Box 1663,<br>
> Los Alamos, NM 87544<br>
> 505-709-0534<br>
</blockquote></div></div>