Hi everybody!
I have a problem with Pardiso in a fortran project. I am trying to write a simple routine to solve a linear system, but compilation stops at calling pardiso_64 (or pardiso in the case of 32bit version of my program). The error is:
Error 1 error #6285: There is no matching specific subroutine for this generic subroutine call. [PARDISO_64]
Here it is my code. A module defines the variables to be shared between all project file:
MODULE variables
INTEGER*8 :: M ! Lines
INTEGER*8 :: N ! Columns
DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: MATRA ! original 2D matrix
INTEGER*8, DIMENSION(:), ALLOCATABLE :: ROWSA,COLSA ! matrix of row pointers and column positions
DOUBLE PRECISION, dimension(:), ALLOCATABLE :: VALSA
DOUBLE PRECISION, dimension(:,:), ALLOCATABLE :: RHSVC, SOLVC ! matrix of values, right hand side and solution vector
END MODULE variables
After filling in the arrays VALSA, COLSA, ROWSA, RHSVC, SOLVC, we call a subroutine that prepares variables and calls pardiso:
SUBROUTINE INTPAR
USE VARIABLES
USE mkl_pardiso
! Internal solver memory pointer for 64-bit architectures
INTEGER*8 PT(64)
! Other variables
INTEGER*8 maxfct, mnum, mtype, phase, nrhs, error, msglvl
! Solver Parameters vectors
INTEGER*8, ALLOCATABLE, DIMENSION(:) :: iparm, perm
!---- ALLOCATION OF VECTORS
ALLOCATE(SOLVC(M,1))
ALLOCATE(RHSVC(M,1))
ALLOCATE(iparm(64))
ALLOCATE(perm(M))
!.... END OF ALLOCATION
!---- CHOICE OF PARDISO PARAMETERS
iparm(1) = 1
iparm(2) = 2
iparm(3) = 1
iparm(4) = 0
iparm(5) = 0
iparm(6) = 0
iparm(7) = 0
iparm(8) = 9
iparm(9) = 0
iparm(10) = 13
iparm(11) = 1
iparm(12) = 0
iparm(13) = 0
iparm(14) = 0
iparm(15) = 0
iparm(16) = 0
iparm(17) = 0
iparm(18) = -1
iparm(19) = -1
iparm(20) = 0
iparm(21) = 0
iparm(22) = 0
iparm(23) = 0
iparm(24) = 1
iparm(25) = 0
iparm(26) = 0
iparm(27) = 1
iparm(28) = 0
iparm(29) = 0
iparm(30) = 0
iparm(31) = 0
iparm(32) = 0
iparm(33) = 0
iparm(34) = 0
iparm(35) = 0
iparm(36) = 0
iparm(37) = 0
iparm(38) = 0
iparm(39) = 0
iparm(40) = 0
iparm(41) = 0
iparm(42) = 0
iparm(43) = 0
iparm(44) = 0
iparm(45) = 0
iparm(46) = 0
iparm(47) = 0
iparm(48) = 0
iparm(49) = 0
iparm(50) = 0
iparm(51) = 0
iparm(52) = 0
iparm(53) = 0
iparm(54) = 0
iparm(55) = 0
iparm(56) = 0
iparm(57) = 0
iparm(58) = 0
iparm(59) = 0
iparm(60) = 1
iparm(61) = 0
iparm(62) = 0
iparm(63) = 0
iparm(64) = 0
maxfct = 1
mnum = 1
nrhs = 1
error = 0
msglvl = 1
mtype = -2
! Initiliaze the internal solver memory pointer.
do i = 1, 64
pt(i)=0
end do
!.... END OF VARIABLES INITIALIZATION
!---- PHASE 11 - ANALYSIS
! Reordering and Symbolic Factorization, This step also allocates
! all memory that is necessary for the factorization
phase = 11 ! only reordering and symbolic factorization
CALL pardiso_64 (PT, maxfct, mnum, mtype, phase, n, VALSA, COLSA, &
ROWSA, perm, nrhs, iparm, msglvl, RHSVC, SOLVC, error)
WRITE(*,*) 'Reordering completed ... '
END SUBROUTINE INTPAR
Again, the compilation of such code stops with error: Error 1 error #6285: There is no matching specific subroutine for this generic subroutine call. [PARDISO_64]
It is compiled in debug mode, on 64bit configuration in Visual Studio 2010 with Intel Fortran Compiler XE 12.0
Any solution? Thank you very much!