topic Re: Incomplete Cholesky Factorization in IntelĀ® oneAPI Math Kernel Library
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/1191265#M29741
<P>Could you please fix that?</P>
<P>The Incomplete Cholesky is very important.</P>
<P>There are modern algorithms to parallelize it and optimize it. We expect the fastest factorization from the Intel guys :-).</P>Fri, 10 Jul 2020 07:29:03 GMTRoyi2020-07-10T07:29:03ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763649#M81
Hello,<BR /><BR />I'm using MKL RCI CG solver to solve large sparse SLE with symmetric and positive definite matrix. I would like to use an incomplete Cholesky factorization as a preconditioner. How can I compute it with MKL?<BR /><BR />There are routines for generating ILU0 and ILUT preconditioners described in "Preconditioners based on Incomplete LU Factorization Technique" section. However, it said that:<BR /><BR /><I>Avoid using these preconditioners with MKL RCI CG solver because in
general, they produce non-symmetric resulting matrix even if the
original matrix is symmetric. Usually, an inverse of the preconditioner
is required in this case. To do this the Intel MKL triangular solver
routine <A href="https://community.intel.com/../../sites/products/documentation/hpc/mkl/mklman/bla/functn_mkl_dcsrtrsv.htm#functn_mkl_dcsrtrsv">mkl_dcsrtrsv</A> must be applied twice: for the low triangular part of the preconditioner, and then for its upper triangular part.<BR /></I><BR />So does these routines can be used to obtain incomplete Cholesky factorization? I.e. to compute L and U such that simply L = U^{T}? And what the phrase "<I>inverse of the preconditioner
is required in this case ... </I><I>solver
routine <A href="https://community.intel.com/../../sites/products/documentation/hpc/mkl/mklman/bla/functn_mkl_dcsrtrsv.htm#functn_mkl_dcsrtrsv">mkl_dcsrtrsv</A> must be applied twice</I>" does exactly means? There is an example of using this preconditioner on general matrix for MKL RCI FGMRES solver and it already utilizes two calls:<BR /><BR /><SAMP class="codeph">call mkl_dcsrtrsv('L','N','U', <VAR>n</VAR>, <VAR>bilut</VAR>, <VAR>ibilut</VAR>, <VAR>jbilut</VAR>, tmp(ipar(22)),trvec)</SAMP>
<P><SAMP class="codeph">call mkl_dcsrtrsv('U','N','N', <VAR>n</VAR>, <VAR>bilut</VAR>, <VAR>ibilut</VAR>, <VAR>jbilut</VAR>, trvec, tmp(ipar(23)))</SAMP></P>Wed, 31 Aug 2011 10:21:59 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763649#M81Mikhail_Matrosov2011-08-31T10:21:59ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763650#M82
Hi Mikhail,<DIV>RCI solver compute lower triangular matrix L and upper triangular matrix U that has sparse format and their multiplication is near initial matrix A. But in general case matrix L in not equal U^T. To apply preconditioner on your iterative solver you need to calulate z =(LU)^-1*r, where r is vector.</DIV><DIV>z=((LU)^-1)*r could be realized in two step:</DIV><DIV>y = (L^-1)*r;</DIV><DIV>z =(U^-1)*y using 2 call of mkl_dcsrtrsv.</DIV><DIV></DIV><DIV>With best regards,</DIV><DIV>Alexander Kalinkin</DIV><DIV></DIV>Wed, 31 Aug 2011 11:12:48 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763650#M82Alexander_K_Intel22011-08-31T11:12:48ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763651#M83
Ok, several more questions:<BR /><BR />Do I need to provide my symmetric matrix in full (non-symmetric) format for <B>dcsrilu0</B> routine? How do the L and U matrices stored in the only output parameter <B>bilu0</B> of this routine?<BR />Wed, 31 Aug 2011 12:19:06 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763651#M83Mikhail_Matrosov2011-08-31T12:19:06ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763652#M84
Hi,<DIV>You need to provide full matrix format if you want to obtain incomplete Cholesky decomposition for this matrix. If you provide only lower or upper part of initial matrix as input parameter for dcsrilu0 routine you'd gotten incomplete Cholesky decomposition only for this part of matrix. About second question: L and U matrices stored in one matrix described by arrays ia, ja andbilu0.</DIV><DIV>With best regards,</DIV><DIV>Alexander Kalinkin</DIV>Wed, 31 Aug 2011 12:39:40 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763652#M84Alexander_K_Intel22011-08-31T12:39:40ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763653#M85
I did all as you said, but it doesn't seem to work. At least, convergance rate is much worse than for simple Jacobi preconditioner, so I assume something went wrong.<BR /><BR />Applying (LU)^-1 as a preconditioner is just what is done for RCI FGMRES for non-symmetric matrices. It is also done in MKL example dcsrilu0_exampl1.c for the same purpose. So, are you really sure, I should use the same scenario when working with symmetric matrix and PCI CG?.. I'm not very expirienced in numerical methods, so maybe I'm missing something obvious.<BR />Wed, 31 Aug 2011 14:34:19 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763653#M85Mikhail_Matrosov2011-08-31T14:34:19ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763654#M86
Mikhail,<DIV>Incomplete Cholesky preconditioner could be better than Jacobi in condition number sense in several cases but could be worse than it in other. There is not any theoretical results on quality of such preconditioner in general case. Moreover, incomplete Cholesky preconditioner is unsymmetrical so you can't use it with CG.</DIV><DIV>With best regards,</DIV><DIV>Alexander Kalinkin</DIV>Wed, 31 Aug 2011 15:03:37 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763654#M86Alexander_K_Intel22011-08-31T15:03:37ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763655#M87
<I>incomplete Cholesky preconditioner is unsymmetrical so you can't use it with CG<BR /></I><BR />Thats's not true. Incomplete Cholesky factorization is given by A = L * L^T, so it is symmetrical by design, in distinction from incomplete LU factorization. Yes, I cannot use LU factorization, that's from where my questions did arise.<BR /><BR />So, again: how can I compute incomplete Cholesky factorization with MKL?Wed, 31 Aug 2011 15:27:24 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763655#M87Mikhail_Matrosov2011-08-31T15:27:24ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763656#M88
Ok, I've undersood you. Current version of MKL could calculate only incomplete LU decomposition but not incomplete L*L^T decomposition.<DIV>With best regards,</DIV><DIV>Alexander Kalinkin</DIV>Wed, 31 Aug 2011 18:46:53 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763656#M88Alexander_K_Intel22011-08-31T18:46:53ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763657#M89
That's sad. Is there a chance it will be introduced in the upcoming releases?Fri, 02 Sep 2011 16:25:13 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763657#M89Mikhail_Matrosov2011-09-02T16:25:13ZIncomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763658#M90
Hi Mikhail,<DIV>If you provide data about your company or university I'd include into Feature Request on Incomplete Cholesky Factorization. You could do it using private answer.</DIV><DIV>With best regards,</DIV><DIV>Alexander Kalinkin</DIV>Sat, 03 Sep 2011 03:28:03 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/763658#M90IDZ_A_Intel2011-09-03T03:28:03ZRe: Incomplete Cholesky Factorization
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/1191265#M29741
<P>Could you please fix that?</P>
<P>The Incomplete Cholesky is very important.</P>
<P>There are modern algorithms to parallelize it and optimize it. We expect the fastest factorization from the Intel guys :-).</P>Fri, 10 Jul 2020 07:29:03 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Incomplete-Cholesky-Factorization/m-p/1191265#M29741Royi2020-07-10T07:29:03Z