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

"Access violation reading location" in Pardiso

Guido_Valerio
Beginner
952 Views

Hi all,

I'm having problems with the "Pardiso" subroutine in Intel Visual Fortran Composer XE 2011 Update 8.

I get an "access violation reading location" during the computation of the "non-zeros for LL^T factorization," at the very beginning of the analysis phase.

I guess the problem is related either to my MKL configuration or to the way I'm declaring some variables.

I'm attaching a sample project (a simplified version of the actual code).

I run Microsoft Visual Studio 2010 Version 10.040219.1 SP1Rel on Windows 7 SP1, with an Intel Xeon X5650.

The options I chose in the "Properties" window of my project are in the txt file "Properties".

The other text files are the data used by the project (the size of the matrices involved is also very small for practical reasons).

Thank you for your help!

0 Kudos
1 Solution
mecej4
Honored Contributor III
952 Views
You probably need to set IPARM(28) = 1 after calling PARDISOINIT and before calling PARDISO_SC. The default value which is set by the call to PARDISOINIT is 0, which is appropriate for double precision complex matrices, whereas your.program concerns itself with a single-precision complex matrix problem. Until you get rid of errors in calling sequences, it would be prudent to check the error flags returned by PARDISO before continuing computations with the results set by each call.

View solution in original post

0 Kudos
4 Replies
mecej4
Honored Contributor III
953 Views
You probably need to set IPARM(28) = 1 after calling PARDISOINIT and before calling PARDISO_SC. The default value which is set by the call to PARDISOINIT is 0, which is appropriate for double precision complex matrices, whereas your.program concerns itself with a single-precision complex matrix problem. Until you get rid of errors in calling sequences, it would be prudent to check the error flags returned by PARDISO before continuing computations with the results set by each call.
0 Kudos
Guido_Valerio
Beginner
952 Views
Thank you for your help, The code seems to be working fine now!
0 Kudos
Guido_Valerio
Beginner
952 Views
Another quick question. Does PARDISO have problems if a complex and unsymmetric matrix happens to have specific symmetries? I'm trying to use PARDISO with the following simple matrix: a = (/ 1.0, 1.0, 1.0, 1.0, 1.0 /) ja = (/ 1, 2, 3, 4, 5 /) ia(1:5) = (/ 1, 2, 3, 4, 5, 0, 0 /) ia(6:915) = 0 ia(916) = 6 It's a 915x915 matrix whit a 5x5 diagonal block (a 5x5 unit matrix) in the first 5 diagonal entries. The output of pardiso says: Input check: ia(neqns+1)_new 5 old 0 are incompatible Input parameters: inconsistent error=8 max_fac_store_in: 1 matrix_number_in: 1 matrix_type_in : 13 ido_in : 13 neqns_in : 915 ia(neqns_in+1)-1 : 5 nb_in : 1 I'm calling pardiso with the same code I have uploaded in the first post (this time I use single precision, and for more complex matrices it works fine). Thank you
0 Kudos
mecej4
Honored Contributor III
952 Views
Does PARDISO have problems if a complex and unsymmetric matrix happens to have specific symmetries? To answer that would lead one to indulge oneself in idle speculation.
Your data initializations do not correctly describe the packed column form of the diagonal matrix. The MKL Reference should be consulted regarding compact columns storage conventions.
Try [fortran] ia(1:5) = (/ 1, 2, 3, 4, 5 /); ia(6:n+1)=nnz+1 ja(1:5) = (/ 1, 2, 3, 4, 5 /) a(1:5) = (/ 1d0, 1d0, 1d0, 1d0, 1d0 /); a(6:nnz)=0d0 [/fortran]
0 Kudos
Reply