[petsc-users] FGMRES - Hessenberg matrix size and eigenvalues

Pierre Seize Pierre.Seize at onera.fr
Fri Jun 7 03:35:58 CDT 2019



On 06/06/19 14:56, Pierre Seize via petsc-users wrote:
>
> Dear PETSc,
>
> I have been reading the sources about the GMRES (mostly the FGMRES) 
> solver, and there are a few things I do not understand.
>
>     - Aren't the arrays used to represent the Hessenberg matrix too 
> wide ? The hh_origin and hes_origin arrays are allocated using (max_k 
> + 2) * (max_k + 1) and (max_k + 1) * (max_k + 1) scalars respectively. 
> But when I monitor those two matrices I see that the last columns (and 
> therefore the last line of hh_origin) are not used. Is there a reason 
> why the hh_origin array is not of size (max_k + 1) * (max_k) ?
>
Please forget the following point. It seems that I cannot read correctly 
: hes_origin is used instead of hh_origin ...
>
>     - In KSPComputeExtremeSingularValues_GMRES we compute the singular 
> values of the hh_origin array, which is an upper diagonal (R) matrix 
> from a QR decomposition of the Hessenberg matrix. Therefore it has the 
> same singular values as the original Hessenberg matrix. In this 
> function, we don't forget to "zero the below diagonal garbage". But in 
> KSPComputeEigenvalues_GMRES we just use hh_origin right away, without 
> removing the sub-diagonal. I don't understand what's computed here : 
> the eigenvalues of the upper diagonal representation of the Hessenberg 
> matrix + the subdiagonal part of the Hessenberg matrix ? Why don't we 
> use the hes_origin matrix ? Finally, in KSPComputeRitz_GMRES we use 
> hes_ritz, the last full Hessenberg matrix if available 
> (gmres->fullcycle > 0), and hh_origin otherwise. But hes_ritz is a 
> copy of the last full hh_origin, so my question is the same as before :
>
> *TLDR* : why do we use hh_origin to compute the eigenvalues, and not 
> hes_origin ? Why is hes_ritz a copy of hh_origin and not of hes_origin ?
>
>
I maintain my questions about the Hessenberg arrays sizes, and the 
hes_ritz / fullcycle arguments not being used in FGMRES.
>
>     - I have also noticed that the fullcycle attribute is not used for 
> FGMRES (it is for GMRES). Is that intentional ? This attribute is only 
> used in the KSPComputeRitz_GMRES function, does that mean that 
> KSPComputeRitz should not be called with a FGMRES type ? If so, should 
> there be a test to check if the KSP type is indeed GMRES and raise a 
> warning/error if not ?
>
>
> I hope I'm not bothering too much, I've tried to answer theses 
> questions by myself but I can't seem to find out.
>
>
> Thanks in advance,
>
> Pierre Seize
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190607/9465660a/attachment.html>


More information about the petsc-users mailing list