[petsc-dev] coding style
tmunson at mcs.anl.gov
Fri Aug 19 12:36:52 CDT 2016
>>> As far as I know, the only information needed in the Hilbert space approach is matrices denoting inner products and norms.
>> The norms are not a problem, especially just the norm you use to decide if you have "converged". The trickier issue is "the inner products", which ones and what it actually means to switch it from the usual l2 within an algorithm.
> Agreed. For Hilbert spaces, there are natural inner products that act like l2; I mainly worked off the TaoGradientNorm function when I built up the API in PR #506. CG can be posed in terms of inner products, and generalized to an abstract inner product space setting. Given the current implementation, the “inner product” could always be switched back to the usual l2, possibly at the cost of retarded convergence due to worse conditioning.
> I don’t know how to generalize beyond that setting to, say, an abstract Krylov subspace method and a normed vector space equipped with a duality pairing. I have a tiny bit of intuition, but I defer to people who have more expertise in the area and welcome the discussion. References would be helpful, too.
> There is a really excellent short book about this that SIAM just published. Its by Strakos and Marek.
Maybe I simply need to be better informed, but I am not sure the Hilbert space support
in LMVM and the rest of the unconstrained optimization codes in TAO is correct. From
what I have read, you need an adjoint operator and then need to redefine the
quasi-Newton approximation using the correct inner products and the line search
also needs to use the correct inner products. I think the strong Wolfe conditions
and More'-Thuente line search might then be okay and the Hilbert-space BFGS or
DFP matrix should satisfy appropriate properties.
Using Hilbert spaces should be okay, but it seems some thought needs to be put
into the solvers. It does not seem to always be a simple global search
and replace to change the norms and inner product.
More information about the petsc-dev