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

dcsrilut routine parameter

lke
Beginner
476 Views

Hi,

 

I'm trying to use dcsrilut to create a ilut preconditioner for a sparse iterative solver.

But it seems that the parameter maxfil doesn't mean the number of extra calculated entries in addition to the original non-zeros in the rows of LU factors. According to the explanation in the manual " Maximum fill-in, which is half of the preconditioner bandwidth. The number of non-zero elements in the rows of the preconditioner cannot exceed (2*maxfil+1).", this is the number of total entries per row in LU factors.

 

Could anyone please clarify this? Do I misunderstand it, or is it different from the common meaning of maxfil for ilut? Thanks in advance.

 

Regards,

Lu

0 Kudos
2 Replies
Aleksandra_K
Moderator
344 Views

Hi,

I think the misunderstanding comes from the variety of definitions of the matrix bandwidth in the literature (it can be defined as a sum, sum+1 or max of upper and lower bandwidths). Using this terminology, the maxfil parameter corresponds to the maximum of lower and upper bandwidths of the preconditioner, thus the number of non-zero elements in the rows of the preconditioner is no bigger than 2*maxfil +1.


Could you provide a reference for the other (which you referred to as common) meaning of maxfil to help me further investigate the issue? 


Regards,

Aleksandra


0 Kudos
lke
Beginner
322 Views

Hi Aleksandra,

Thanks for your reply. I don't recall any specific reference, but some other iterative solvers adopt the following definition: numberofNonzero = 2*mafill+nL(i)+nU(i)+1, where nL and nU are the number of nonzero in the L and U parts of the i-th row of A, respectively. 

But I don't think other solvers' implementation matters. What you have clarified is the only important thing to use correctly dcsrilut routine. Thanks for it.

 

Regards,

Lu

0 Kudos
Reply