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

Pardiso: schur complement time usage

Jens_E_
New Contributor I
898 Views

Hi, 

I'm computing the schur complement using iparm(36)=1. I do this in phases so that I first perform phase 331, then phase 332 in my own code, and then phase 333 in pardiso.

Prior to this, the schur complement matrix is calculated using phase 12.

It seems to me that one call (phase 331 then 333) with N right-hand sides is a lot faster than, say, 10 calls with N/10 right-hand sides. From the time usage it acutally seems like pardiso refactorizes the matrix for each subsequent call using phase 33x? Could this be?

I expected a single call (many rhs) to be faster than several calls (fewer rhs), but not by what seems to be a 10-fold (using the example above).

Labels (1)
0 Kudos
2 Replies
Kirill_V_Intel
Employee
859 Views

Hello,

The documentation says that iparm(36)=1 should be used when only Schur complement needs to be computed. If you want to do solves afterwards, you should better use iparm(36)=2. So I'd say that your iparm parameters are a bit off for your purposes.

See https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-fortran/top/sparse-solver-routines/onemkl-pardiso-parallel-direct-sparse-solver-interface/pardiso-iparm-parameter.html

So, is there a reason why you want to do solves with iparm(36)=1? If there is one, let us know so that we dive a bit and check whether we truly don't save what we unexpectedly need to compute (factorization arrays) in case iparm(36)=1.

I hope this helps.

Best,
Kirill

0 Kudos
Gennady_F_Intel
Moderator
790 Views

The issue is closing and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only.


0 Kudos
Reply