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

Question on MAXFCT and MNUM in PARDISO

ljbetche
Beginner
691 Views
Hello,

Ihave beenreading the PARDISO documentation and was just hoping for some clarification of a point regarding these two settings. In particular, under the description of MAXFCT, one finds the sentence:

"Matrices with a different sparsity structure can be kept in memory with different memory address pointers PT."

In my application, I have four large sparse systems which are solved repeatedly (i.e., solve system 1, then system 2, then system 3, then system 4, then back to the top to solve system 1 again, ...); though the coefficients of some of the systems change somewhat between successive solves of that system, the sparsity patterns remain the same, but are different from system to system (i.e., system i's coefficients may change somewhat, but it's sparsity pattern is constant and different from that of system j if i and j are not equal). It seems that the best way to attack such a problem is to use PARDISO's direct-iterative preconditioning CGS solver as described at the top of page 2511 of the MKL Reference Manual. To implement this, I gather that I must:

a)save the pointer array PT (and possibly permutation array PERM)for each system
b) set PHASE = 13 the first time each system is solved, andPHASE = 23on subsequent solves
c) not call PARDISO with PHASE = -1 until after the last solve

However, what I am not clear on is the following: in this case, should I use MAXFCT = 4 and assign a number MNUM to each system, or should I be using MAXFCT = 1 = MNUM for each system, since the sparsity pattern, and thus the pointer array PT, are different for each? Thanks.

Lee
0 Kudos
2 Replies
Sergey_P_Intel2
Employee
691 Views
Hi, Lee!

PARDISO can process several matrices with identical matrix sparsity pattern and store the factors of these matrices at the same time. In this case one and the same memory address pointers PT can be used for storing LU structure and LU values for all the matrices. Note that because LU structures for such matrices are the same so PARDISO can keep only one of them (if the same memory address pointer PT is used). Consequently, parameters MAXFCT and MNUM make sense for the memory address pointer PT but not for the matrices solved by PARDISO at the same time with different memory address pointers PT.

So you should use MAXFCT=MNUM=1 for each system (i.e. each memory address pointer PT).

With best regards,
Sergey
0 Kudos
ljbetche
Beginner
691 Views

Sergey,

Thank you very much.

Lee

0 Kudos
Reply