Zero Pivot Row in LU Factorization

Tim Stitt timothy.stitt at ichec.ie
Fri Dec 7 09:58:30 CST 2007


Barry,

I added the following lines to my Fortran code:

call KSPGetPC(ksp,pc,error)
call KSPSetUp(ksp,error)
oneInt=1
call PCBJacobiGetSubKSP(pc,oneInt,PETSC_NULL,kspSub,error)
call KSPGetPC(kspSub,pcSub,error)
call PCFactorSetShiftNonzero(pcSub,PETSC_DECIDE,error)

Now the parallel code goes beyond the zero pivot problem I was getting 
in the KSPSolve()...but only process 0 seems to complete the KSPSolve() 
and Process 1 and higher never makes it out of the KSPSolve() i.e. 
process 0 moves on and performs post-KSPSolve work (just some print 
statements) while the other processes never get out of KSPSolve(). My 
job only terminates once the requested wallclock expires. Again when 
running with only 1 process everything terminates successfully.

Any ideas? Have I done something stupid with the instructions above?

Thanks,

Tim.

Barry Smith wrote:
>
> On Dec 6, 2007, at 6:09 AM, Tim Stitt wrote:
>
>> Barry,
>>
>> I will be using these routines from Fortran..so I am assuming that 
>> Fortran interfaces are available for each routine?
>>
>> Also, how do I know how many sub ksp's there will be? I am assuming I 
>> need to dynamically allocate the subksp array in Fortran but do I 
>> know the size in advance? Is this related to the value 'n' ? If so, 
>> how do I calculate 'n'.
>
>    There will always be one sub ksp be default. There will only be 
> more than one if you use
> PCBJacobiSetLocalBlocks() or PCBJacobiSetTotalBlocks() or 
> -pc_bjacobi_blocks.
> In general we recommend keeping it one. This means you do not need to 
> allocate
> any KSP, just pass in a KSP variable
>
>>
>>
>> What is the significance of subksp[0]? Is it just the sub ksp at this 
>> position I should be interested in?
>
>    This is just the first one. If you have multiply ones then you must 
> loop over them, but I
> recommend having just one.
>>
>>
>> Finally, which of the PCFactorSetxxxxxx routines should I be using?
>
> PCFactorSetZeroPivot() or PCFactorSetShiftNonzero() or 
> PCFactorSetShiftPd() depending
> on what you want to have happen.
>
>    Barry
>
>>
>>
>> Sorry for the twenty questions (well nearly) but I am just a bit 
>> confused with this approach.
>>
>> Thanks,
>>
>> Tim.
>>
>> Barry Smith wrote:
>>>
>>>  KSP *subksp;
>>>
>>>   KSPGetPC(ksp,pc)
>>>   PCBJacobiGetSubKSP(pc,&n,PETSC_NULL,&subksp)
>>>   KSPGetPC(subksp[0],&subpc);
>>>   PCFactorSetxxxxxx(subpc, ....
>>>
>>>  Barry
>>>
>>>
>>> On Nov 25, 2007, at 1:10 PM, Tim Stitt wrote:
>>>
>>>> I should also add that the code executes without this error when 
>>>> using 1 processor...but then displays the error when running in 
>>>> parallel with more than one process.
>>>>
>>>> Tim Stitt wrote:
>>>>> Hi all,
>>>>>
>>>>> Can anyone suggest ways of overcoming the following pivot error I 
>>>>> keep receiving in my PETSc code during a KSPSolve().
>>>>>
>>>>> [1]PETSC ERROR: Detected zero pivot in LU factorization
>>>>> see 
>>>>> http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#ZeroPivot! 
>>>>>
>>>>> [1]PETSC ERROR: Zero pivot row 1801 value 0.00102826 tolerance 
>>>>> 0.00165189 * rowsum 1.65189e+09!
>>>>>
>>>>> From checking the documentation....the error is in row 1801, which 
>>>>> means it is most likely not a matrix assembly issue?
>>>>>
>>>>> I tried the following prior to the solve with no luck either.....
>>>>>
>>>>> call KSPGetPC(ksp,pc,error)
>>>>> call PCFactorSetShiftNonzero(pc,PETSC_DECIDE,error)
>>>>>
>>>>> Is there anything else I can try?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Tim.
>>>>>
>>>>
>>>>
>>>> --Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
>>>> HPC Application Consultant - ICHEC (www.ichec.ie)
>>>>
>>>> Dublin Institute for Advanced Studies
>>>> 5 Merrion Square - Dublin 2 - Ireland
>>>>
>>>> +353-1-6621333 (tel) / +353-1-6621477 (fax)
>>>>
>>>
>>
>>
>> --Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
>> HPC Application Consultant - ICHEC (www.ichec.ie)
>>
>> Dublin Institute for Advanced Studies
>> 5 Merrion Square - Dublin 2 - Ireland
>>
>> +353-1-6621333 (tel) / +353-1-6621477 (fax)
>>
>


-- 
Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
HPC Application Consultant - ICHEC (www.ichec.ie)

Dublin Institute for Advanced Studies
5 Merrion Square - Dublin 2 - Ireland

+353-1-6621333 (tel) / +353-1-6621477 (fax)




More information about the petsc-users mailing list