Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
6591 Discussions

## Difference: mkl_?cootrsv and mkl_?coosv

Beginner
231 Views
Hello!

I have to solve a linear system of equations A*y=x.
My matrix A is a complex general matrix stored in coo.

When I try to call mkl_zcoosv the following way
`[fortran]CALL mkl_zcoosv('N',700,1._8,'g  f',mat,row,column,i,workd(ipntr(1)),workd(ipntr(2)))[/fortran]`
MKL says 'MKL ERROR: Parameter 4 was incorrect on entry to MKL_ZCOOSV'

the first answer says that "for NIST like triangular solvers, matdescra(1) must be 'T' or 'D'".

But I thought mkl_?coosv isn't a triangular solver. And if so, what is the difference to mkl_?cootrsv ?

Regards,

S.

1 Solution
New Contributor I
231 Views

Hi

mkl_?coosv is also triangular solver.

There is some difference between mkl_?coosv and mkl_?cootrsv/mkl_cspblas_?cootrsv.
The first is different interface of these functions.
The second is different functionality:
------------------------------------------------------------------------------------------------------------------
mkl_?cootrsv and mkl_cspblas_?cootrsv routines solve a system of linear equations with matrix-vector operations:

y = inv(A) * x or y = inv(A')*x,

where x and y are vectors, A is a sparse upper or lower triangular matrix with unit or non-unit main diagonal, A' is the transpose of A.

------------------------------------------------------------------------------------------------------------------
The mkl_?coosv routine solves a system of linear equations with matrix-vector operations:

y := alpha*inv(A)*x or y := alpha*inv(A')*x,

where alpha is scalar, x and y are vectors, A is a sparse upper or lower triangular matrix with unit or non-unit main diagonal, A' is the transpose of A.

------------------------------------------------------------------------------------------------------------------
Also mkl_?cootrsv is one-based, mkl_cspblas_?cootrsv is zero-based, and mkl_?coosv support both one-base and zero-base.
4 Replies
New Contributor I
232 Views

Hi

mkl_?coosv is also triangular solver.

There is some difference between mkl_?coosv and mkl_?cootrsv/mkl_cspblas_?cootrsv.
The first is different interface of these functions.
The second is different functionality:
------------------------------------------------------------------------------------------------------------------
mkl_?cootrsv and mkl_cspblas_?cootrsv routines solve a system of linear equations with matrix-vector operations:

y = inv(A) * x or y = inv(A')*x,

where x and y are vectors, A is a sparse upper or lower triangular matrix with unit or non-unit main diagonal, A' is the transpose of A.

------------------------------------------------------------------------------------------------------------------
The mkl_?coosv routine solves a system of linear equations with matrix-vector operations:

y := alpha*inv(A)*x or y := alpha*inv(A')*x,

where alpha is scalar, x and y are vectors, A is a sparse upper or lower triangular matrix with unit or non-unit main diagonal, A' is the transpose of A.

------------------------------------------------------------------------------------------------------------------
Also mkl_?cootrsv is one-based, mkl_cspblas_?cootrsv is zero-based, and mkl_?coosv support both one-base and zero-base.
Beginner
231 Views
Thank you very much!
I didn't get it from the reference manual.

Then I need another possibilty to solve my system... Maybe PARDISO or DSS... I'll see...
New Contributor I
231 Views

Hi,
the best way to solve sparse system is using PARDISO. It is flexible, has good performance and scalability. Please try to use PARDISO. If you have any questions you are welcome!

Beginner
231 Views