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

Parallel solver for tridiagonal matrices

Mephistopheles
Beginner
1,040 Views

Hi all,

I'm looking to update an old code that currently uses the Thomas algorithm to solve large tridiagonal matrices. I'm considering using MKL to achieve this but am a little unclear on which is the appropriate solver to use if I want to move towards massive parallelisation. Based on the documentation for the latest release, 2023.1, it looks like the ?dttrsb solver would be a natural choice for replacing the existing implementation, but I don't believe that this can be run with multiple threads (or offloaded to GPU). An alternative appears to be PARDISO, which I believe can offload to GPU, but I appreciate that this solver may be less than optimal for tridiagonal matrices.

Any thoughts on which way to go with this? Is PARDISO the sensible choice if I want to replace the Thomas algorithm with something that can be run in parallel?

 

As an aside, I couldn't see the well-known ?gtsrv solver in the current documentation. Has this effectively been replaced by ?dttrsb?

Thanks in advance!

0 Kudos
5 Replies
VarshaS_Intel
Moderator
997 Views

Hi,


Thanks for posting in Intel Communities.


Could you please let us know which MKL solver/routines along with the Intel MKL version you had used for your old code?


>>?gtsrv solver in the current documentation

And also, is it ?gtsrv solver or ?gtsv solver? As ?gtsv solver which will compute the tridiagonal matrix. Please find the below link for more information:

https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-1/gtsv.html


Thanks & Regards,

Varsha


0 Kudos
Mephistopheles
Beginner
993 Views

Hi Varsha,

 

Thanks for your response. The existing code uses its own implementation of the Thomas algorithm - nothing from MKL is currently used. The hope is that MKL can be used to help accelerate the code and the current aim is to try and establish which routines are available that will allow running in parallel (be it oacross multiple CPUs or, ideally, on GPUs).

 

It seems that the parallel options would be either PARDISO, which is probably not the optimal choice for tridiaginal matrices, or perhaps something from ScaLAPACK such as p?dtsv - any recommendations on this front?

 

In response to your second question - my apologies, yes, I meant to refer to ?gtsv. However,  if my understanding is correct, that one cannot be run in parallel. Is this indeed the case?

 

Many thanks.

0 Kudos
VarshaS_Intel
Moderator
928 Views

Hi,


We are working on your issue. We will get back to you soon.


Thanks & Regards,

Varsha


0 Kudos
VarshaS_Intel
Moderator
884 Views

Hi,


Could you please provide us with the details on the problem size and number of right-hand sides? Also, could you please let us know if your matrix is diagonally dominant? Or is it partial pivoting? 


Thanks & Regards,

Varsha


0 Kudos
VarshaS_Intel
Moderator
829 Views

Hi,

 

Thanks for providing the details internally.

 

Thanks for helping us improve our products! We’ve submitted the feature request to the dev team, they will consider it based on multiple factors including, but not limited to priority and criticality of the feature. Once it is included in an upcoming release, it would be documented in release notes 

 

Thanks & Regards,

Varsha

 

0 Kudos
Reply