Community
cancel
Showing results for 
Search instead for 
Did you mean: 
michel_lestrade
Beginner
386 Views

MKL ERROR: Parameter 1 was incorrect on entry to MKL_DCSRCOO

Jump to solution
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
386 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

10 Replies
Gennady_F_Intel
Moderator
386 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
386 Views
This line looks incorrect:
integer,intent(in)::jrn(n),jcn(n)
jcn and jrn arrays each must have nz elements.
michel_lestrade
Beginner
386 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
Gennady_F_Intel
Moderator
386 Views
Then could you please provide the comprehensive example which we can build and check the behavior?
--Gennady
Gennady_F_Intel
Moderator
386 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
michel_lestrade
Beginner
386 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 ?
Gennady_F_Intel
Moderator
386 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.
michel_lestrade
Beginner
386 Views
Same error with job(4)=2.
Sergey_K_Intel1
Employee
387 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

michel_lestrade
Beginner
386 Views
Thanks. Just upgraded to XE2011 and it does indeed solve the problem.
Reply