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
Einsteiger
1.855Aufrufe

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 Lösung
mecej4
Geehrter Beitragender III
1.855Aufrufe
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.

Lösung in ursprünglichem Beitrag anzeigen

4 Antworten
mecej4
Geehrter Beitragender III
1.856Aufrufe
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.
Guido_Valerio
Einsteiger
1.855Aufrufe
Thank you for your help, The code seems to be working fine now!
Guido_Valerio
Einsteiger
1.855Aufrufe
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
mecej4
Geehrter Beitragender III
1.855Aufrufe
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]
Antworten