<?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 FGMRES SOLVER in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FGMRES-SOLVER/m-p/868905#M8272</link>
    <description>&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;Hi&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;I want to
solve a sparse matrix system A*x=b with A an unsymmetric matrix with 7
diagonals. The values of b are all quite close to 0. For this I want to use the
FGMRES solver, but for some reason it doesn't perform a stopping test. If I use
the standard stopping test and I write itercount to a file, almost all values are
zero (depending on the initial value of x, 5 or 6 of the 100.000 values of itercount are a little over 150 or 50), and if I want to use a user defined stopping test RCI_REQUEST never takes
the value of 2, but the solution vector x is still passed to the main program. &lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;the
solver subroutine looks like this&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;subroutine FGMRES(A,IA,X,RHS,N,NZEROS)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SOME parameters=""&gt;&lt;P&gt;&lt;/P&gt;&lt;/SOME&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES_INIT(N, X, RHS, RCI_REQUEST,
IPAR, DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;IF (RCI_REQUEST.NE.0) GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;













&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(8)=0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(9)=0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(10)=1&lt;BR /&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;
&lt;/SPAN&gt;DPAR(1)=1.0D-12&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;CALL DFGMRES_CHECK(N, X, RHS,
RCI_REQUEST, IPAR, DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.NE.0) GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;1&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES(N, X, RHS, RCI_REQUEST, IPAR,
DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.EQ.0) GOTO 3&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.EQ.1) THEN&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;CALL MKL_DDIAGEMV('N',N, A, N, IA,
NZEROS, TMP(IPAR(22)), TMP(IPAR(23)))&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 1&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else if (RCI_REQUEST.eq.2) then&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;













&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;res2 = 0.d0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;call &lt;STOPTEST&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;if(res2.gt.crit)then&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 1&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 3&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;end if&lt;P&gt;&lt;/P&gt;&lt;/STOPTEST&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal
"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ELSE IF(RCI_REQUEST.eq.4)then&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;











&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;if(dpar(7).gt.crit)then&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 1&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 3&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;end if&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ELSE&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ENDIF&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;3&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES_GET(N, X, RHS, RCI_REQUEST,
IPAR, DPAR, TMP, ITERCOUNT)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 1000&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;999&lt;SPAN&gt; &lt;/SPAN&gt;PRINT *,'The solver has returned the ERROR
code ', RCI_REQUEST&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;1000&lt;SPAN&gt; &lt;/SPAN&gt;CONTINUE&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;END SUBROUTINE FGMRES&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;If anyone
could find the error I made in this code it would be a great help&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Wouter&lt;BR /&gt;</description>
    <pubDate>Tue, 24 Jun 2008 09:02:52 GMT</pubDate>
    <dc:creator>wwendele</dc:creator>
    <dc:date>2008-06-24T09:02:52Z</dc:date>
    <item>
      <title>FGMRES SOLVER</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FGMRES-SOLVER/m-p/868905#M8272</link>
      <description>&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;Hi&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;I want to
solve a sparse matrix system A*x=b with A an unsymmetric matrix with 7
diagonals. The values of b are all quite close to 0. For this I want to use the
FGMRES solver, but for some reason it doesn't perform a stopping test. If I use
the standard stopping test and I write itercount to a file, almost all values are
zero (depending on the initial value of x, 5 or 6 of the 100.000 values of itercount are a little over 150 or 50), and if I want to use a user defined stopping test RCI_REQUEST never takes
the value of 2, but the solution vector x is still passed to the main program. &lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;the
solver subroutine looks like this&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;subroutine FGMRES(A,IA,X,RHS,N,NZEROS)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SOME parameters=""&gt;&lt;P&gt;&lt;/P&gt;&lt;/SOME&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES_INIT(N, X, RHS, RCI_REQUEST,
IPAR, DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;IF (RCI_REQUEST.NE.0) GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;













&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(8)=0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(9)=0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IPAR(10)=1&lt;BR /&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;
&lt;/SPAN&gt;DPAR(1)=1.0D-12&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;CALL DFGMRES_CHECK(N, X, RHS,
RCI_REQUEST, IPAR, DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.NE.0) GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;1&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES(N, X, RHS, RCI_REQUEST, IPAR,
DPAR, TMP)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.EQ.0) GOTO 3&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;IF (RCI_REQUEST.EQ.1) THEN&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;CALL MKL_DDIAGEMV('N',N, A, N, IA,
NZEROS, TMP(IPAR(22)), TMP(IPAR(23)))&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 1&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else if (RCI_REQUEST.eq.2) then&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;













&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;res2 = 0.d0&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;call &lt;STOPTEST&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;if(res2.gt.crit)then&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 1&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 3&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;end if&lt;P&gt;&lt;/P&gt;&lt;/STOPTEST&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal
"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ELSE IF(RCI_REQUEST.eq.4)then&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;











&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;if(dpar(7).gt.crit)then&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 1&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;else&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;goto 3&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;end if&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ELSE&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 999&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;ENDIF&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;3&lt;SPAN&gt; &lt;/SPAN&gt;CALL DFGMRES_GET(N, X, RHS, RCI_REQUEST,
IPAR, DPAR, TMP, ITERCOUNT)&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;GOTO 1000&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;999&lt;SPAN&gt; &lt;/SPAN&gt;PRINT *,'The solver has returned the ERROR
code ', RCI_REQUEST&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;



&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;1000&lt;SPAN&gt; &lt;/SPAN&gt;CONTINUE&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;END SUBROUTINE FGMRES&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;If anyone
could find the error I made in this code it would be a great help&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Wouter&lt;BR /&gt;</description>
      <pubDate>Tue, 24 Jun 2008 09:02:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FGMRES-SOLVER/m-p/868905#M8272</guid>
      <dc:creator>wwendele</dc:creator>
      <dc:date>2008-06-24T09:02:52Z</dc:date>
    </item>
    <item>
      <title>Re: FGMRES SOLVER</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FGMRES-SOLVER/m-p/868906#M8273</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi Wouter,&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;It is hard to answer your question without having a test case. Could you please provide us with the working test case so we can check what went wrong in your code? Probably, the best way to this is to go to MKL support page (&lt;/SPAN&gt;&lt;A href="http://www.intel.com/support/performancetools/libraries/mkl/index.htm"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;A href="http://www.intel.com/support/performancetools/libraries/mkl/index.htm" target="_blank"&gt;http://www.intel.com/support/performancetools/libraries/mkl/index.htm&lt;/A&gt;&lt;SPAN&gt;), register (if you are not registered yet), and submit your problem together with the test case. Thank you!&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 27 Jun 2008 02:56:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/FGMRES-SOLVER/m-p/868906#M8273</guid>
      <dc:creator>Sergey_G_Intel</dc:creator>
      <dc:date>2008-06-27T02:56:23Z</dc:date>
    </item>
  </channel>
</rss>

