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

MKL ERROR: Parameter 1 was incorrect on entry to MKL_DCSRCOO

michel_lestrade
Beginner
2,109 Views
Hi,

I am trying to understand the meaning of this error; I had thought I had followed the example properly but I guess not...

My goal is to convert COO matrix data to a sorted CSR format that PARDISO can use. Here are the relevant lines of code:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
integer,intent(in):: n,nz
integer,intent(in)::jrn(n),jcn(n)
doubleprecision,intent(in):: matA_coo(nz), vB(n)

! Row index and colum pointer - CSR format
integer,allocatable::row_ptr(:),col_ind(:)
! Sparse matrix data - CSR format
double precision,allocatable::matA_csr(:)

! For conversion utility
integer info, job(8)

! Local storage of sparse matrix
allocate(col_ind(nz),row_ptr(n+1),matA_csr(nz))

! Convert triplet/COO data to CSR format
job(1)=2 ! convert COO to CSR and sort
job(2)=1 ! 1-based indexing in CSR
job(3)=1 ! 1-based indexing in COO
job(5)=nz ! # of non-zeros in matrix A
job(6)=0 ! Fill all CSR arrays
call mkl_dcsrcoo(job, n, matA_csr, col_ind, row_ptr, nz, matA_coo, jrn, jcn, info)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

The code generates a MKL ERROR as per the subject line. I would guess that there is something wrong with my job variable but I don't see it.
0 Kudos
1 Solution
Sergey_K_Intel1
Employee
2,109 Views
Michel,

The problem comes fromyour setting

job(1)=2 ! convert COO to CSR and sort

The possibility of conversion with follow-up sorting was first integrated in 10.3Gold and their updates. MKL 10.2.7 and earlier supports only two values of job(1) (see page 338 of MKL 10.2.6 User Guide):

If job(1)=0, the matrix in the CSR format is converted to the coordinate format;

if job(1)=1, the matrix in the coordinate format is converted to the CSR format.

So the converter from MKL 10.2.7 works correctly.

All the best
Sergey

View solution in original post

0 Kudos
10 Replies
Gennady_F_Intel
Moderator
2,109 Views
Ifinfo=1, the routine is interrupted because there is no space in the arraysacoo,rowind,colindaccording to the valuenzmax.
please try to allocate these arrays accordingly
0 Kudos
Konstantin_A_Intel
2,109 Views
This line looks incorrect:
integer,intent(in)::jrn(n),jcn(n)
jcn and jrn arrays each must have nz elements.
0 Kudos
michel_lestrade
Beginner
2,109 Views
Indeed, that was a stupid mistake; the array isn't used directly in this routine so I did not spot it before. The declaration is OK in the subroutine that actually uses the array so I guess I was lucky that passing the pointer here was sufficient in my old code.

Unfortunately, fixing this doesn"t solve the problem and I get the same error.

As for the memory allocation, it is done one level up from this subroutine as allocate(jrn(nz),jcn(nz),matA_coo(nz)) so I think it should be OK. The output value of info is 0 so that is not telling me anything useful either.


BTW, I am using version 11.1.067
0 Kudos
Gennady_F_Intel
Moderator
2,109 Views
Then could you please provide the comprehensive example which we can build and check the behavior?
--Gennady
0 Kudos
Gennady_F_Intel
Moderator
2,109 Views
Hi Michel,
I reproduced the problem with this version of MKL ( the Compiler PRO v.11.0.67 contains version of MKL 10.2 Update6 ) even on win32 system.
With the latest version 10.3 uipdate3, the problem is dissapeared ( at least with windows32 ).
please see here the log file I got with the 10.3Update3:
+++++++++++++++
matrix order= 6
matrix fill= 19
info= 0
idum= 19
1 1 1 10.0000000000000
2 1 5 -2.00000000000000
3 2 1 3.00000000000000
4 2 2 9.00000000000000
5 2 6 3.00000000000000
6 3 2 7.00000000000000
7 3 3 8.00000000000000
8 3 4 7.00000000000000
9 4 1 3.00000000000000
10 4 3 8.00000000000000
11 4 4 7.00000000000000
12 4 5 5.00000000000000
13 5 2 8.00000000000000
14 5 4 9.00000000000000
15 5 5 9.00000000000000
16 5 6 13.0000000000000
17 6 2 4.00000000000000
18 6 5 2.00000000000000
19 6 6 -1.00000000000000
!!!!!!!!!!!!!!!!!!!!!!!!
1 3 6 9 13 17
20
!!!!!!!!!!!!!!!!!!!!!!!!
1 1 10.0000000000000
2 5 -2.00000000000000
3 1 3.00000000000000
4 2 9.00000000000000
5 6 3.00000000000000
6 2 7.00000000000000
7 3 8.00000000000000
8 4 7.00000000000000
9 1 3.00000000000000
10 3 8.00000000000000
11 4 7.00000000000000
12 5 5.00000000000000
13 2 8.00000000000000
14 4 9.00000000000000
15 5 9.00000000000000
16 6 13.0000000000000
17 2 4.00000000000000
18 5 2.00000000000000
19 6 -1.00000000000000
Press any key to continue . . .
--Gennady
0 Kudos
michel_lestrade
Beginner
2,109 Views
OK, I will check if we have an update available or ask our IT guy to get it.

Can you check for 64-bit in the meanwhile ?
0 Kudos
Gennady_F_Intel
Moderator
2,109 Views
yes, win64 binaries produces the similar results with the latest 10.3. Update3.
there is one tips which may help You with the version which you use - could you please initialize
job(4)=2
and check if it will work on your side.
0 Kudos
michel_lestrade
Beginner
2,109 Views
Same error with job(4)=2.
0 Kudos
Sergey_K_Intel1
Employee
2,110 Views
Michel,

The problem comes fromyour setting

job(1)=2 ! convert COO to CSR and sort

The possibility of conversion with follow-up sorting was first integrated in 10.3Gold and their updates. MKL 10.2.7 and earlier supports only two values of job(1) (see page 338 of MKL 10.2.6 User Guide):

If job(1)=0, the matrix in the CSR format is converted to the coordinate format;

if job(1)=1, the matrix in the coordinate format is converted to the CSR format.

So the converter from MKL 10.2.7 works correctly.

All the best
Sergey
0 Kudos
michel_lestrade
Beginner
2,109 Views
Thanks. Just upgraded to XE2011 and it does indeed solve the problem.
0 Kudos
Reply