topic Question about the pivoting in numerical factorization in PARDISO in IntelĀ® oneAPI Math Kernel Library
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Question-about-the-pivoting-in-numerical-factorization-in/m-p/1041074#M20711
<P>Dear Intel MKL R&Ds,</P>
<P>I have a question about the pivoting in the numerical factorization in Pardiso solver. Let me explain in details. First, w<SPAN style="font-size: 1em; line-height: 1.5;">e have our own ordering and factorization code. Now, we want to try the MKL Pardiso and see if the Pardiso solver can help with the performance. We</SPAN><SPAN style="font-size: 1em; line-height: 1.5;"> found Pardiso is very very slow in some tests. One test case is a newton problem. On each time step, we solve the Jacobian system Ax=b derived from the Newton method. The matrix size A is about 400k. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">Here is how our own factorization code works. Since our system is pretty stable, we basically only do the order and factor ( corresponding to the symbolic factorization ) for the first time. This order and factor involves looking for a good pivot at each step, do row/column exchange (the ordering) and allocating the memory for the new fill-ins. After this, we keep the matrix order and do numerical factorization without ANY searching for pivot (just use the diagonals), without ANY row/column exchange, without ANY allocation of new memory in the matrix. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">Now, when we test the Pardiso, we hope it does the same thing as our own code. So, for the first time, we let it do the symbolic factorization. then later on, it just does the numerical factorization. However, it is very slow. The IPARM output for the number of perturbed pivots are always nonzero (# of perturbed pivot is around 50k). Furthermore, the number of perturbed pivots actually changes slightly but frequently. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">So, here is my question, does this mean </SPAN><SPAN style="font-size: 1em; line-height: 1.5;">that pardiso numerical factorization still searches for pivot or even reorder instead of blindly to use the diagonals to do the factorization? if so, how can we disable this? I want it blindly use the diagonals to do the numerical factorization. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">If a zero diagonal really happens during the numerical factorization, we hope the Pardiso solver to quit and report zero diagonal to us. Then we explicitly call order and factor ( the symbolic factorization ) on the same matrix. If this time it is still singular, we think it is really singular. Otherwise, we keep doing the numerical factorization with the new matrix order until meeting a zero-diagonal again. To do this, which parameters of pardiso do we need to set? </SPAN></P>
<P>Thank you very much.</P>
<P>Charles</P>
<P> </P>
<P> </P>
<P> </P>Wed, 05 Aug 2015 23:03:39 GMTCharles_J_2015-08-05T23:03:39ZQuestion about the pivoting in numerical factorization in PARDISO
https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Question-about-the-pivoting-in-numerical-factorization-in/m-p/1041074#M20711
<P>Dear Intel MKL R&Ds,</P>
<P>I have a question about the pivoting in the numerical factorization in Pardiso solver. Let me explain in details. First, w<SPAN style="font-size: 1em; line-height: 1.5;">e have our own ordering and factorization code. Now, we want to try the MKL Pardiso and see if the Pardiso solver can help with the performance. We</SPAN><SPAN style="font-size: 1em; line-height: 1.5;"> found Pardiso is very very slow in some tests. One test case is a newton problem. On each time step, we solve the Jacobian system Ax=b derived from the Newton method. The matrix size A is about 400k. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">Here is how our own factorization code works. Since our system is pretty stable, we basically only do the order and factor ( corresponding to the symbolic factorization ) for the first time. This order and factor involves looking for a good pivot at each step, do row/column exchange (the ordering) and allocating the memory for the new fill-ins. After this, we keep the matrix order and do numerical factorization without ANY searching for pivot (just use the diagonals), without ANY row/column exchange, without ANY allocation of new memory in the matrix. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">Now, when we test the Pardiso, we hope it does the same thing as our own code. So, for the first time, we let it do the symbolic factorization. then later on, it just does the numerical factorization. However, it is very slow. The IPARM output for the number of perturbed pivots are always nonzero (# of perturbed pivot is around 50k). Furthermore, the number of perturbed pivots actually changes slightly but frequently. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">So, here is my question, does this mean </SPAN><SPAN style="font-size: 1em; line-height: 1.5;">that pardiso numerical factorization still searches for pivot or even reorder instead of blindly to use the diagonals to do the factorization? if so, how can we disable this? I want it blindly use the diagonals to do the numerical factorization. </SPAN></P>
<P><SPAN style="font-size: 1em; line-height: 1.5;">If a zero diagonal really happens during the numerical factorization, we hope the Pardiso solver to quit and report zero diagonal to us. Then we explicitly call order and factor ( the symbolic factorization ) on the same matrix. If this time it is still singular, we think it is really singular. Otherwise, we keep doing the numerical factorization with the new matrix order until meeting a zero-diagonal again. To do this, which parameters of pardiso do we need to set? </SPAN></P>
<P>Thank you very much.</P>
<P>Charles</P>
<P> </P>
<P> </P>
<P> </P>Wed, 05 Aug 2015 23:03:39 GMThttps://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Question-about-the-pivoting-in-numerical-factorization-in/m-p/1041074#M20711Charles_J_2015-08-05T23:03:39Z