Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

FGMRES SOLVER

wwendele
Beginner
577 Views

Hi

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.

the solver subroutine looks like this

subroutine FGMRES(A,IA,X,RHS,N,NZEROS)

CALL DFGMRES_INIT(N, X, RHS, RCI_REQUEST, IPAR, DPAR, TMP)

IF (RCI_REQUEST.NE.0) GOTO 999

IPAR(8)=0
IPAR(9)=0
IPAR(10)=1
DPAR(1)=1.0D-12

CALL DFGMRES_CHECK(N, X, RHS, RCI_REQUEST, IPAR, DPAR, TMP)

IF (RCI_REQUEST.NE.0) GOTO 999

1 CALL DFGMRES(N, X, RHS, RCI_REQUEST, IPAR, DPAR, TMP)

IF (RCI_REQUEST.EQ.0) GOTO 3

IF (RCI_REQUEST.EQ.1) THEN

CALL MKL_DDIAGEMV('N',N, A, N, IA, NZEROS, TMP(IPAR(22)), TMP(IPAR(23)))
GOTO 1

else if (RCI_REQUEST.eq.2) then

res2 = 0.d0
call
if(res2.gt.crit)then
goto 1
else
goto 3
end if

ELSE IF(RCI_REQUEST.eq.4)then

if(dpar(7).gt.crit)then
goto 1
else
goto 3
end if

ELSE

GOTO 999

ENDIF

3 CALL DFGMRES_GET(N, X, RHS, RCI_REQUEST, IPAR, DPAR, TMP, ITERCOUNT)

GOTO 1000

999 PRINT *,'The solver has returned the ERROR code ', RCI_REQUEST

1000 CONTINUE

END SUBROUTINE FGMRES

If anyone could find the error I made in this code it would be a great help

.
Wouter
0 Kudos
1 Reply
Sergey_G_Intel
Employee
577 Views

Hi Wouter,

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 (http://www.intel.com/support/performancetools/libraries/mkl/index.htm), register (if you are not registered yet), and submit your problem together with the test case. Thank you!

0 Kudos
Reply