I am wondering what pardiso's factorization sensitivity to linear dependencies in a symmetric matrix is.
For a matrix where I know the two positions of the linear dependencies I found that
- when I leave the matrix dense mkl-lapack-potrf reports the correct diagonals where the element of the factor becomes zero.
- Turning the matrix into sparse format, pardiso reports only one diagonal element (iparm(30)), sometimes none, i.e. telling me that the matrix is of full rank.
I tried to find a knob which I could turn to make pardiso more sensitive to this problem such that pardiso produces the same results as potrf but couldn't find anything!
Did I miss something??
I believe the main reason for the different behavior of PARDISO vs LAPACK's potrf is the pivoting strategy. PARDISO uses a so called complete supernodal pivoting strategy. Essentially, the pivoting is done within each supernode (which you can think of as a collection of columns) separately. While in LAPACK, I think, full pivoting strategy might be used.
I suggest you try to change iparm(10) = iparm which defines the tolerance for detecting zero pivots in PARDISO. The value to set there should depend on the order of the elements of the matrix.
Also, you can try to change the pivoting strategy via iparm(21) and set it to the diagonal 1x1 pivoting, in particular.
If you have a small- or moderate-sized matrix which exhibits the described behavior [incorrect number of pivots is returned by PARDISO], you can share a reproducer with us. Then we would be able to find more details about why the observed number of pivots is returned and if it is a bug, fix it.
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.