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

Pardiso and pardiso_64

Mehdi_M_1
Beginner
610 Views

Hello,

I have a FORTRAN program for solving flow field (Stokes flow) problem using FEM. Firstly, I used PARDISO solver to solve the coupled problem. I was totally happy with PARDISO, because it is faster than MATLAB (I used to work with MATLAB and I am new in ifort). Bellow, I have summarized the command related to PARDISO:

!----------Matrix solution PARDISO--------------------------------------------

!          [M ]*{X} = {RHS}

INTEGER                            :: PT(64), MTYPE, IPARM(64)

INTEGER                            :: MAXFCT,MNUM,PHASE,N , NRHS , MSGLVL , ERROR

INTEGER,ALLOCATABLE                :: PERM(:)

REAL(8),ALLOCATABLE                  :: X(:)

INTEGER,ALLOCATABLE                :: ja(:) ,  ia(:)

REAL(8),ALLOCATABLE,DIMENSION(:)   :: M

! ABOVE FOR INTRODUCING THE PARAMETERS

MTYPE = 11       

CALL PARDISOINIT (PT, MTYPE, IPARM)

ALLOCATE( PERM(dof) , STAT = ISTAT )  ! dof : degree of freedom

ALLOCATE( X(dof)    , STAT = ISTAT )

MAXFCT = 1

MNUM   = 1

PHASE  = 13

N      = dof          

PERM   = 1 

NRHS   = 1

MSGLVL = 0      

CALL CPU_TIME(start)

CALL PARDISO (PT, MAXFCT, MNUM, MTYPE, PHASE, N, M_SPARSE, ia,ja, PERM, NRHS, IPARM, MSGLVL, RHS, X, ERROR)

CALL CPU_TIME(finish)               

write(*,*) (finish-start)*1000 , 'msec'   , ERROR

This code works without any problem and perfectly.

My problem is for the situation that I want to use PARDISO_64. According to the document, all of the input and output integers, should be INTEGER(8), therefore:

!----------Matrix solution PARDISO--------------------------------------------

!  MX = RHS

INTEGER(8)                         :: PT(64), MTYPE, IPARM(64)

INTEGER(8)                         :: MAXFCT,MNUM,PHASE,N , NRHS , MSGLVL , ERROR

INTEGER(8),ALLOCATABLE             :: PERM(:)

REAL(8),ALLOCATABLE                    :: X(:)

INTEGER(8),ALLOCATABLE                :: ja(:) ,  ia(:)

REAL(8),ALLOCATABLE,DIMENSION(:)   :: M

! ABOVE FOR INTRODUCING THE PARAMETERS

MTYPE = 11       

CALL PARDISOINIT (PT, MTYPE, IPARM)

ALLOCATE( PERM(dof) , STAT = ISTAT )  ! dof : degree of freedom

ALLOCATE( X(dof)    , STAT = ISTAT )

MAXFCT = 1

MNUM   = 1

PHASE  = 13

N      = dof          

PERM   = 1 

NRHS   = 1

MSGLVL = 0      

CALL CPU_TIME(start)

CALL PARDISO_64 (PT, MAXFCT, MNUM, MTYPE, PHASE, N, M_SPARSE, ia,ja, PERM, NRHS, IPARM, MSGLVL, RHS, X, ERROR)

CALL CPU_TIME(finish)               

write(*,*) (finish-start)*1000 , 'msec'   , ERROR

but, this  code does not working and it gives the following error:

forrtl: server (157): program Exception – access violation

I use the following to compile my code:

ifort USEFULLS.f90 CONSTANTS.f90 PRE_PROCESSOR_3D.f90 DATATYPES.f90 VEL_SUBS.f90 SPARSE_SUB.f90 main00.f90 -o t1 -Qmkl -heap-arrays

 

USEFULLS.f90, CONSTANTS.f90, PRE_PROCESSOR_3D.f90, DATATYPES.f90, VEL_SUBS.f90, and SPARSE_SUB.f90 are modules that are developed by me and main00.f90 is the main program. I think (I am not sure) that I must use some other keys in my compile command line.

I have similar problem for cluster_sparse_solver, which works well, but cluster_sparse_solver_64 does not work!!!!!!

Best regards

Mehdi

 

0 Kudos
1 Solution
Zhen_Z_Intel
Employee
610 Views

Hi Mehdi,

The error means you're touching memory which you're not allowed to. You probably read/write outside of bounds, my advice is:

1. Add -i8 compiler option for ifort.
2. If above suggestion no help, please add "-check bounds" option. If you get error message, please paste it to me.

Best regards,
Fiona

 

View solution in original post

0 Kudos
1 Reply
Zhen_Z_Intel
Employee
611 Views

Hi Mehdi,

The error means you're touching memory which you're not allowed to. You probably read/write outside of bounds, my advice is:

1. Add -i8 compiler option for ifort.
2. If above suggestion no help, please add "-check bounds" option. If you get error message, please paste it to me.

Best regards,
Fiona

 

0 Kudos
Reply