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

I am trying to solve for x in Ax=B, where A is a symmetric positive definite square sparse matrix, B is a matrix with the same numbers of rows as A and multiple columns, and x has the same dimensions as B.

I have successfully used Pardiso and the MKL DSS (direct sparse solver) routines for this, but I am looking for a third alternative, and from the documentation it looks like the mkl_dcsrsm routine should be able to do it, however it just returns garbage.

I suspect that either mkl_dcsrsm isn't meant for what I'm doing or I am setting the matdescra array incorrectly (I have tried 'SUNF ' and 'TUNF ' with 1-based indexing). The documentation on mkl_dcsrsm says that "A is a sparse upper or lower triangular matrix...". In my case A is a sparse symmetric matrix and hence I am just passing it the upper triangle (like I do with Pardiso and MKL DSS).

Can anyone shed some light on it?

Link Copied

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

The MKL_?csrsm routines are intended to be used when the linear equations to be solved are **triangular**. Perhaps, you confused a triangular matrix with the lower (or upper) **triangular part** of a symmetric matrix?

The difference is that, in a lower triangular matrix, the upper triangle contains nothing but zeroes above the main diagonal, whereas in a symmetric matrix the upper triangle holds a mirror image of the lower triangle.

It is up to the software designer to decide whether the conceptually present zeroes (or the mirror image values) are actually needed to be stored or used in the argument arrays passed to the solver.

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

Thanks for clarifying that.

Do you know if the MKL DSS routines call the Pardiso routines under the covers or are they internally different solvers? There are quite a few references to Pardiso in the DSS documentation.

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

MKL doc just mentioned, DSS is an alternative to Intel MKL PARDISO interface. But right, you can take it as MKL DSS routines call Pardiso routines under the covers. The core implementation of DSS is based on pardiso functionality.

Best Regards,

Ying

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

It makes perfect sense that MKL provides a DSS interface to Pardiso. DSS is an older direct sparse solver -- indeed, there is a chapter on DSS in the DEC/Compaq manual for the CXML library (2001). Providing access to a new solver using an older interface makes it easier to use the new solver with older code without requiring changes to the code. Pardiso was released in 2007, if I am not mistaken.

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

Thanks, makes sense.

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