Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library
- different results between mkl_dcscmv and gemv

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

shaopeng_z_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-24-2012
04:36 AM

69 Views

different results between mkl_dcscmv and gemv

In Intel® MKL mkl_dcscmv and gemv produce different result .

At first,I use the mkl_dcscmv to compute K*X=ANS ,where matrix K(2280,2280) converts to the sparse format CSC (COPPTR,ROWIND,VALUES or ROWIND,VALUES,pointer_B,pointer_E) as follows:

program CSC_MATRIX_VECTOR

implicit none

integer::i,j

integer,parameter::nRows=2280

integer,parameter::nNonzero=25395

integer,allocatable::COPPTR(:),ROWIND(:),pointer_B(:),pointer_E(:)

double precision,allocatable::VALUES(:)

double precision,allocatable::X(:),ANS(:)

double precision::alpha,beta

character(6):: matdescra

allocate(COPPTR(nRows+1))

open(unit=10,file='COPPTR.txt')

read(10,*)COPPTR

close(10,status="keep")

allocate(ROWIND(nNonzero))

open(unit=10,file='ROWIND.txt')

read(10,*)ROWIND

close(10,status="keep")

allocate(VALUES(nNonzero))

open(unit=10,file='VALUES.txt')

read(10,*)VALUES

close(10,status="keep")

allocate(X(nRows))

allocate(ANS(nRows))

open(unit=10,file='X.txt')

read(10,*)X

close(10,status="keep")

alpha=1.0

beta=0.0

matdescra='SLNF'

allocate(pointer_B(nRows))

allocate(pointer_E(nRows))

do i=1,nRows

pointer_B(i)=COPPTR(i)

pointer_E(i)=COPPTR(i+1)

end do

call mkl_dcscmv('N', nRows, nRows, alpha, matdescra, VALUES, ROWIND, pointer_B,

pointer_E,X, beta, ANS)

open(unit=10,file='ANS.txt')

write(10,'(D24.16)')ANS

end

result::

ANS(CSC).txt

Secondly,I use gemv to compute K*X=ANS,as follows:

include 'blas.f90'

program FULL_MATRIX_VECTOR

use MKL95_BLAS

use f95_precision

implicit none

integer::i,j

integer,parameter::nRows=2280

double precision,allocatable::K(:,:),X(:),ANS(:)

double precision::alpha,beta

allocate(K(nRows,nRows))

open(unit=10,file='K.txt')

read(10,*)((K(i,j),j=1,nRows),i=1,nRows)

close(10,status="keep")

allocate(X(nRows))

open(unit=10,file='X.txt')

read(10,*)X

close(10,status="keep")

allocate(ANS(nRows))

alpha=1.0

beta=0.0

call gemv(K, X, ANS,alpha ,beta ,'N')

open(unit=10,file='ANS.txt')

write(10,'(D24.16)')ANS

end

the result is

ANS(full).txt

Some elements in the results are quite different,I don't understand why the mkl_dcscmv and gemv cannot produce the same accuracy.

Thanks for your help.

Link Copied

3 Replies

mecej4

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-24-2012
05:32 AM

69 Views

Some elements in the results are quite different,I don't understand whyThe result vectors that you gave (ansfull.txt,anscsc.txt) have elements as large as 1.6 E4, but the largest difference between the two is 3.7 E-6. On what basis do you say that the results are "quite different"? How much precision do you have in the input matrix and vector, and is a variation of 3.7 E-6 between the two results quite reasonable in that perspective?

shaopeng_z_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-24-2012
06:48 AM

69 Views

mecej4

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-24-2012
07:27 AM

69 Views

I have double precision ,15 or16 significant digits are accurate. I think the order of magnitude may be 1.0E-10 at least.How did you come to this conclusion? Things may work out in that fashion for some matrices, and not so for others. You did not show the input file K.txt, which. presumably, contains the same coefficients as in the compressed matrix, augmented by zero elements. We have to establish that the two K matrices are mathematically identical before we compare the two results for K.x.

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

For more complete information about compiler optimizations, see our Optimization Notice.