<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MKL preconditioned conjugate gradient (PCG)  in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870499#M8429</link>
    <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Preconditioners for conjugate gradient solver of linear system A * x = b in Intel MKL&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi all, let me come to my question now. I am trying to implement a precondtioned conjugate gradient solver for a system A*x=b were A is a symmetric matrix. Without precondtioning I get the correct solution in a transient flow simulation but the solution is too slow. From the MKL Reference manual I infer that preconditioners are supported by the DCG routine but it is also stated that: &lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;'Both ILU0 and ILUT preconditioners can apply to any non-degenerate matrix. They can be used&lt;BR /&gt;alone or together with the Intel MKL RCI FGMRES solver (see Sparse Solver Routines). Avoid&lt;BR /&gt;using this preconditioners with MKL RCI CG solver because in general, they produce&lt;BR /&gt;non-symmetric resulting matrix even if the original matrix is symmetric.'&lt;/EM&gt; &lt;BR /&gt;&lt;BR /&gt;THis is bad news because other people have used incomplete lower upper decomposition with great success in their PCG codes. So what preconditioners are recommended by the Intel team and where can I find them? Actually, I tried ILUO in my problem despite the above warning but the solution did not converge anymore. Here is a brief extract from my code:&lt;BR /&gt;&lt;BR /&gt; call dcg_init(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; call dcg_check(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; call DCSRILU0(N,AP,IA,JA,CP,ipar,dpar,ierr)&lt;BR /&gt;201  call dcg(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; if (istat.eq.0) then&lt;BR /&gt; goto 210&lt;BR /&gt;elseif (istat.eq.1) then&lt;BR /&gt; call  MKL_DCSRSYMV('U',N,AP,IA,JA,TMP,TMP(1,2))&lt;BR /&gt; goto 201&lt;BR /&gt; elseif (istat.eq.3) then&lt;BR /&gt; call mkl_dcsrtrsv('L','N','U',N,CP,IA,JA,tmp(1,3),trvec)&lt;BR /&gt; call mkl_dcsrtrsv('U','N','N',N,CP,IA,JA,trvec,tmp(1,4))&lt;BR /&gt; goto 201              &lt;BR /&gt; else&lt;BR /&gt; write(*,*) 'Error in MKL solver.'&lt;BR /&gt; stop&lt;BR /&gt; endif&lt;BR /&gt;210 call dcg_get(NumNP,xopt,B,istat,ipar,dpar,tmp,it)&lt;BR /&gt;&lt;BR /&gt;If anyone has an idea where my bug is or what preconditioner I could use instead of ILU, I would appreciate it!&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Fri, 26 Jun 2009 21:10:01 GMT</pubDate>
    <dc:creator>Idefix</dc:creator>
    <dc:date>2009-06-26T21:10:01Z</dc:date>
    <item>
      <title>MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870498#M8428</link>
      <description>Preconditioners for conjugate gradient solver of linear system A * x = b in Intel MKL</description>
      <pubDate>Fri, 26 Jun 2009 20:54:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870498#M8428</guid>
      <dc:creator>Idefix</dc:creator>
      <dc:date>2009-06-26T20:54:59Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870499#M8429</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Preconditioners for conjugate gradient solver of linear system A * x = b in Intel MKL&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi all, let me come to my question now. I am trying to implement a precondtioned conjugate gradient solver for a system A*x=b were A is a symmetric matrix. Without precondtioning I get the correct solution in a transient flow simulation but the solution is too slow. From the MKL Reference manual I infer that preconditioners are supported by the DCG routine but it is also stated that: &lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;'Both ILU0 and ILUT preconditioners can apply to any non-degenerate matrix. They can be used&lt;BR /&gt;alone or together with the Intel MKL RCI FGMRES solver (see Sparse Solver Routines). Avoid&lt;BR /&gt;using this preconditioners with MKL RCI CG solver because in general, they produce&lt;BR /&gt;non-symmetric resulting matrix even if the original matrix is symmetric.'&lt;/EM&gt; &lt;BR /&gt;&lt;BR /&gt;THis is bad news because other people have used incomplete lower upper decomposition with great success in their PCG codes. So what preconditioners are recommended by the Intel team and where can I find them? Actually, I tried ILUO in my problem despite the above warning but the solution did not converge anymore. Here is a brief extract from my code:&lt;BR /&gt;&lt;BR /&gt; call dcg_init(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; call dcg_check(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; call DCSRILU0(N,AP,IA,JA,CP,ipar,dpar,ierr)&lt;BR /&gt;201  call dcg(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt; if (istat.eq.0) then&lt;BR /&gt; goto 210&lt;BR /&gt;elseif (istat.eq.1) then&lt;BR /&gt; call  MKL_DCSRSYMV('U',N,AP,IA,JA,TMP,TMP(1,2))&lt;BR /&gt; goto 201&lt;BR /&gt; elseif (istat.eq.3) then&lt;BR /&gt; call mkl_dcsrtrsv('L','N','U',N,CP,IA,JA,tmp(1,3),trvec)&lt;BR /&gt; call mkl_dcsrtrsv('U','N','N',N,CP,IA,JA,trvec,tmp(1,4))&lt;BR /&gt; goto 201              &lt;BR /&gt; else&lt;BR /&gt; write(*,*) 'Error in MKL solver.'&lt;BR /&gt; stop&lt;BR /&gt; endif&lt;BR /&gt;210 call dcg_get(NumNP,xopt,B,istat,ipar,dpar,tmp,it)&lt;BR /&gt;&lt;BR /&gt;If anyone has an idea where my bug is or what preconditioner I could use instead of ILU, I would appreciate it!&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 26 Jun 2009 21:10:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870499#M8429</guid>
      <dc:creator>Idefix</dc:creator>
      <dc:date>2009-06-26T21:10:01Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870500#M8430</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Hi all, let me come to my question now. I am trying to implement a precondtioned conjugate gradient solver for a system A*x=b were A is a symmetric matrix. Without precondtioning I get the correct solution in a transient flow simulation but the solution is too slow. From the MKL Reference manual I infer that preconditioners are supported by the DCG routine but it is also stated that: &lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;'Both ILU0 and ILUT preconditioners can apply to any non-degenerate matrix. They can be used&lt;BR /&gt;alone or together with the Intel MKL RCI FGMRES solver (see Sparse Solver Routines). Avoid&lt;BR /&gt;using this preconditioners with MKL RCI CG solver because in general, they produce&lt;BR /&gt;non-symmetric resulting matrix even if the original matrix is symmetric.'&lt;/EM&gt; &lt;BR /&gt;&lt;BR /&gt;THis is bad news because other people have used incomplete lower upper decomposition with great success in their PCG codes. So what preconditioners are recommended by the Intel team and where can I find them? Actually, I tried ILUO in my problem despite the above warning but the solution did not converge anymore. Here is a brief extract from my code:&lt;BR /&gt;&lt;BR /&gt;call dcg_init(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt;call dcg_check(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt;call DCSRILU0(N,AP,IA,JA,CP,ipar,dpar,ierr)&lt;BR /&gt;201 call dcg(N,xopt,B,istat,ipar,dpar,tmp)&lt;BR /&gt;if (istat.eq.0) then&lt;BR /&gt;goto 210&lt;BR /&gt;elseif (istat.eq.1) then&lt;BR /&gt;call MKL_DCSRSYMV('U',N,AP,IA,JA,TMP,TMP(1,2))&lt;BR /&gt;goto 201&lt;BR /&gt;elseif (istat.eq.3) then&lt;BR /&gt;call mkl_dcsrtrsv('L','N','U',N,CP,IA,JA,tmp(1,3),trvec)&lt;BR /&gt;call mkl_dcsrtrsv('U','N','N',N,CP,IA,JA,trvec,tmp(1,4))&lt;BR /&gt;goto 201 &lt;BR /&gt;else&lt;BR /&gt;write(*,*) 'Error in MKL solver.'&lt;BR /&gt;stop&lt;BR /&gt;endif&lt;BR /&gt;210 call dcg_get(NumNP,xopt,B,istat,ipar,dpar,tmp,it)&lt;BR /&gt;&lt;BR /&gt;If anyone has an idea where my bug is or what preconditioner I could use instead of ILU, I would appreciate it!&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;P&gt;Hi Idefix,&lt;BR /&gt;Could you please describe some details? First of all what the value of ipar(5) and ipar(11) before calling dcg_check? The value of error with/without preconditioner after computation? Is it matrix A positive define? It can help us to understand your problem with ILU and find the way to solve it.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander&lt;/P&gt;</description>
      <pubDate>Sat, 27 Jun 2009 10:48:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870500#M8430</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2009-06-27T10:48:52Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870501#M8431</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421788"&gt;Alexander Kalinkin (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;
&lt;P&gt;Hi Idefix,&lt;BR /&gt;Could you please describe some details? First of all what the value of ipar(5) and ipar(11) before calling dcg_check? The value of error with/without preconditioner after computation? Is it matrix A positive define? It can help us to understand your problem with ILU and find the way to solve it.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi Alexander,&lt;BR /&gt;&lt;BR /&gt;thanks for your reply. I computed the eigenvalues of the matrix A in my example by the LAPACK routines DSYTRD and DSTERF. All eigenvalues are positive, hence the matrix is positive definite. The maximum eigenvalue is 46.6 and the minimum eigenvalue is 0.164. &lt;BR /&gt;&lt;BR /&gt;Here are some more details:&lt;BR /&gt;&lt;BR /&gt;IPAR(5)= 150&lt;BR /&gt;This maximum number of iterations is sufficient if I run DCG without preconditioner. I have made an additional test by setting it to 1000 if I use the preconditioner but the solution  does still not converge. The routine DCG returns values of RCI_Request (istat in my example) of 1, 3, 1, 3 [] and finally -1 (maximum number of iterations exceeded). Without preconditioner, it takes between 30 to 50 iterations until convergence if the relative tolerance DPAR(1) is set to 1.D-6. &lt;BR /&gt;&lt;BR /&gt;IPAR(8)=1&lt;BR /&gt;Routine DCG performs stopping test for number of iterations&lt;BR /&gt;&lt;BR /&gt;IPAR(9)=1&lt;BR /&gt;Routine DCG performs residual stopping test&lt;BR /&gt;&lt;BR /&gt;IPAR(10)=0&lt;BR /&gt;No user-defined stopping test&lt;BR /&gt;&lt;BR /&gt;IPAR(11)=1 &lt;BR /&gt;Use preconditioner.&lt;BR /&gt;&lt;BR /&gt;DPAR(1)=1.0D-6&lt;BR /&gt;Relative tolerance. Increasing this value to 1.D-3 does not help to reach convergence if I use the preconditioner, without preconditioner it lowers the number of iterations required to reach convergence to about 20. All other values of array DPAR are at their default values. &lt;BR /&gt;&lt;BR /&gt;I am looking forward to your reply, &lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 29 Jun 2009 02:02:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870501#M8431</guid>
      <dc:creator>Idefix</dc:creator>
      <dc:date>2009-06-29T02:02:21Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870502#M8432</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Hi Alexander,&lt;BR /&gt;&lt;BR /&gt;thanks for your reply. I computed the eigenvalues of the matrix A in my example by the LAPACK routines DSYTRD and DSTERF. All eigenvalues are positive, hence the matrix is positive definite. The maximum eigenvalue is 46.6 and the minimum eigenvalue is 0.164. &lt;BR /&gt;&lt;BR /&gt;Here are some more details:&lt;BR /&gt;&lt;BR /&gt;IPAR(5)= 150&lt;BR /&gt;This maximum number of iterations is sufficient if I run DCG without preconditioner. I have made an additional test by setting it to 1000 if I use the preconditioner but the solution does still not converge. The routine DCG returns values of RCI_Request (istat in my example) of 1, 3, 1, 3 [] and finally -1 (maximum number of iterations exceeded). Without preconditioner, it takes between 30 to 50 iterations until convergence if the relative tolerance DPAR(1) is set to 1.D-6. &lt;BR /&gt;&lt;BR /&gt;IPAR(8)=1&lt;BR /&gt;Routine DCG performs stopping test for number of iterations&lt;BR /&gt;&lt;BR /&gt;IPAR(9)=1&lt;BR /&gt;Routine DCG performs residual stopping test&lt;BR /&gt;&lt;BR /&gt;IPAR(10)=0&lt;BR /&gt;No user-defined stopping test&lt;BR /&gt;&lt;BR /&gt;IPAR(11)=1 &lt;BR /&gt;Use preconditioner.&lt;BR /&gt;&lt;BR /&gt;DPAR(1)=1.0D-6&lt;BR /&gt;Relative tolerance. Increasing this value to 1.D-3 does not help to reach convergence if I use the preconditioner, without preconditioner it lowers the number of iterations required to reach convergence to about 20. All other values of array DPAR are at their default values. &lt;BR /&gt;&lt;BR /&gt;I am looking forward to your reply, &lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;
&lt;P&gt;Hi Idefix,&lt;BR /&gt;All parameters look nice so the situation that you described below could be caused by non positive define of preconditioner. I think that the best way to solve this problem use not CG that could work correct only with positive define matrices but dfgmres routines. Interface of thus functions similar with interface of CG and describe in IntelMKL Manual near CG interface.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jun 2009 03:40:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870502#M8432</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2009-06-29T03:40:12Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870503#M8433</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421788"&gt;Alexander Kalinkin (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;
&lt;P&gt;Hi Idefix,&lt;BR /&gt;All parameters look nice so the situation that you described below could be caused by non positive define of preconditioner. I think that the best way to solve this problem use not CG that could work correct only with positive define matrices but dfgmres routines. Interface of thus functions similar with interface of CG and describe in IntelMKL Manual near CG interface.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi Alexander,&lt;BR /&gt;&lt;BR /&gt;ok, DFGMRES might probably work but it should be less efficient than PCG for my problem. We have used an unparallelized version of ILU for preconditioning CG for this problem before and it is robust and very quick. I am wondering now about something else. Could it be that DCSRILUO cannot be used at all for symmetric matrices? I mean it should return a nonsymmetric matrix composed of the upper and lower which means that I cannot use the same arrays IA and JA in the call to MKL_DCSRTRSV because the structure of the lower part is not passed to this routine. This structure is basically the same as the upper but maybe MKL_DCSRTRSV cannot extract it because my arrays IA and JA are for a symmetric matrix. Could this be the problem?  And if so, could DCSRILUT be a way out because it returns modified arrays ibilut and jbilut?&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 29 Jun 2009 18:22:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870503#M8433</guid>
      <dc:creator>Idefix</dc:creator>
      <dc:date>2009-06-29T18:22:12Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870504#M8434</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Hi Alexander,&lt;BR /&gt;&lt;BR /&gt;ok, DFGMRES might probably work but it should be less efficient than PCG for my problem. We have used an unparallelized version of ILU for preconditioning CG for this problem before and it is robust and very quick. I am wondering now about something else. Could it be that DCSRILUO cannot be used at all for symmetric matrices? I mean it should return a nonsymmetric matrix composed of the upper and lower which means that I cannot use the same arrays IA and JA in the call to MKL_DCSRTRSV because the structure of the lower part is not passed to this routine. This structure is basically the same as the upper but maybe MKL_DCSRTRSV cannot extract it because my arrays IA and JA are for a symmetric matrix. Could this be the problem? And if so, could DCSRILUT be a way out because it returns modified arrays ibilut and jbilut?&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi Idefix,&lt;BR /&gt;Am I right that youstore your simmetric matrix A in upper or lowercase? May be it is nottotally correct for ILU0 preconditioner cause DCSRILU0 calculate preconditioner based on full arrays of IA and JA. If your ia and ja arrays are for upper/lower triangular matrix DCSRILU0 would create preconditioner for upper/lower triangular matrix. Will be such preconditioner sufficiently good for matrix A or not nobody can say.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander</description>
      <pubDate>Tue, 30 Jun 2009 06:41:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870504#M8434</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2009-06-30T06:41:27Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870505#M8435</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421788"&gt;Alexander Kalinkin (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;Hi Idefix,&lt;BR /&gt;Am I right that youstore your simmetric matrix A in upper or lowercase? May be it is nottotally correct for ILU0 preconditioner cause DCSRILU0 calculate preconditioner based on full arrays of IA and JA. If your ia and ja arrays are for upper/lower triangular matrix DCSRILU0 would create preconditioner for upper/lower triangular matrix. Will be such preconditioner sufficiently good for matrix A or not nobody can say.&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Alexander,&lt;BR /&gt;&lt;BR /&gt;sure, I do only store the upper part of the symmetric matrix A, as this is in agreement with the sparse matrix storage format.  From your last reply I conclude that use of DCSRILUO is impossible for CG in MKL because symmetric matrices stored in sparse matrix format cannot be handled by DCSRILUO? It looks like I will have to switch to dfgmres (as you suggested earlier) or stick to my old solver package and parallelize it with OpenMP. Is it planned to support ILU as preconditioner for CG in future releases? I think this would be great because it is so often used.  &lt;BR /&gt;&lt;BR /&gt;Thanks again for your help.&lt;BR /&gt; &lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 01 Jul 2009 00:35:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870505#M8435</guid>
      <dc:creator>Idefix</dc:creator>
      <dc:date>2009-07-01T00:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: MKL preconditioned conjugate gradient (PCG)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870506#M8436</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/426402"&gt;Idefix&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;&lt;BR /&gt;Alexander,&lt;BR /&gt;&lt;BR /&gt;sure, I do only store the upper part of the symmetric matrix A, as this is in agreement with the sparse matrix storage format. From your last reply I conclude that use of DCSRILUO is impossible for CG in MKL because symmetric matrices stored in sparse matrix format cannot be handled by DCSRILUO? It looks like I will have to switch to dfgmres (as you suggested earlier) or stick to my old solver package and parallelize it with OpenMP. Is it planned to support ILU as preconditioner for CG in future releases? I think this would be great because it is so often used. &lt;BR /&gt;&lt;BR /&gt;Thanks again for your help.&lt;BR /&gt;&lt;BR /&gt;Idefix&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Idefix&lt;BR /&gt;You can use DCSRILU0 for CG in way you suggest butno one can say anything about condition number of preconditioned system and, as result, the number of iteration.If you want to see some new functionality in MKL you can file feature request at &lt;A href="https://premier.intel.com/"&gt;https://premier.intel.com&lt;/A&gt;&lt;BR /&gt;With best regards,&lt;BR /&gt;Alexander</description>
      <pubDate>Wed, 01 Jul 2009 04:43:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-preconditioned-conjugate-gradient-PCG/m-p/870506#M8436</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2009-07-01T04:43:11Z</dc:date>
    </item>
  </channel>
</rss>

