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

Efficient calculation of vT A v

Carlos_C_
Beginner
303 Views

Hi,

What is the most efficient way to calculate vTAv where A is a CRS sparse matrix and v is a vector using Intel MKL (Fortran)?

Thanks in advance.

Carlos

0 Kudos
3 Replies
Zhen_Z_Intel
Employee
303 Views

Dear customer,

The quadratic form x'*A*x is actually calculated as a sum of n^2 terms A(i,j)*x(i)*x(j), where i and j runs from 1 to n.

Are you going to use CSR format for matrix A? If so, you could split the quadratic form into two equations. You could use mkl_?csrsymv to calculate y:=A*x first and then use ?dot to calculate sum of dot multiplication of two vectors res=x' * y. Hope it would be useful to you.

Best regards,
Fiona

0 Kudos
Carlos_C_
Beginner
303 Views

Hi,

Thanks for the reply, I was wondering if there was a built-in function for such calculation in MKL, thus my question.

Best regards

Carlos

0 Kudos
Zhen_Z_Intel
Employee
303 Views

Dear customer,

I am afraid there might no real quadratic form function for matrix with sparse storage format. The good way is to separate calculation. Thanks.

Best regards,
Fiona

0 Kudos
Reply