- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I found a possibly wrong behavior of the function mkl_zcsradd, isolated in the example below:
Also, if the problem will be confirmed, I am not sure if it is really a bug or just a typo in the documentation.
Massimiliano
I found a possibly wrong behavior of the function mkl_zcsradd, isolated in the example below:
[fortran]program csradd
implicit none
! Matrix A
integer :: aia (1:4)
integer :: aja (1:5)
complex(8) :: aval(1:5)
! Matrix B
integer :: bia (1:4)
integer :: bja (1:2)
complex(8) :: bval(1:2)
! Matrix C
integer :: cia (1:4)
integer :: cja (1:7)
complex(8) :: cval(1:7)
! MKL variables
integer :: info
integer :: request
integer :: nrow = 3
integer :: ncol = 3
integer :: sort = 3
integer :: nnz = 7
complex(8) :: beta = cmplx(1.0d0,0.0d0,8)
! Set Matrix A
aia = (/ 1, 3, 4, 6 /)
aja = (/ 1, 3, 2, 1, 2 /)
aval(1) = cmplx(1.0d0,0.0d0,8)
aval(2) = cmplx(3.0d0,0.0d0,8)
aval(3) = cmplx(4.0d0,0.0d0,8)
aval(4) = cmplx(5.0d0,0.0d0,8)
aval(5) = cmplx(0.0d0,4.0d0,8)
! Set Matrix B
bia = (/ 1, 1, 2, 3 /)
bja = (/ 3, 3 /)
bval(1) = cmplx(2.0d0,0.0d0,8)
bval(2) = cmplx(2.0d0,0.0d0,8)
! C = A + B
request = 1
call mkl_zcsradd("N",request,sort,nrow,ncol,aval,aja,aia,beta,bval,bja,bia,cval,cja,cia,nnz,info)
print *, info
print *
! nnz = size(cja) (as in MKL documentation)
request = 0
call mkl_zcsradd("N",request,sort,nrow,ncol,aval,aja,aia,beta,bval,bja,bia,cval,cja,cia,nnz,info)
print *, info
print *, cja
print *
! nnz = size(cja) + 1
request = 0
call mkl_zcsradd("N",request,sort,nrow,ncol,aval,aja,aia,beta,bval,bja,bia,cval,cja,cia,nnz+1,info)
print *, info
print *, cja
end program csradd
[/fortran] The program is compiled with the command:[bash]ifort -O0 -warn all csradd.f90 -lmkl_intel -lmkl_sequential -lmkl_core[/bash]and gives the following output:
[bash] 0
3
1 3 2 3 1 2
0
0
1 3 2 3 1 2
3
[/bash] In the documentation it is written:[xml]nzmax INTEGER. The length of the arrays c and jc.[/xml]while it seems that for the function to work correctly nzmax must be set to:
[fortran]nzmax = size(jc) + 1[/fortran]I would like to ask if this behavior is reproducible by anyone.
Also, if the problem will be confirmed, I am not sure if it is really a bug or just a typo in the documentation.
Massimiliano
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Massimiliano,
Yes, I reproduced the behavior.This is the bug in the code.The documentation is correct.Nzmax must be equal size(jc) as originally is pointed into manual.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Massimiliano. The problem you reported has been fixed in Update 5 available now. Please check the problem and let us know the resullts.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Gennady,
sorry for the late answer. I just checked the test and now it works fine. The new output is:
Massimiliano
sorry for the late answer. I just checked the test and now it works fine. The new output is:
[bash]0 0 1 3 2 3 1 2 3 0 1 3 2 3 1 2 3 [/bash]
Massimiliano
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page