[petsc-dev] vector inner products
Oxberry, Geoffrey Malcolm
oxberry1 at llnl.gov
Thu Apr 12 16:18:59 CDT 2018
Agreed; we find the Hilbert space inner product improves the convergence a great deal when doing mesh refinement studies with quasi-Newton methods in a discretize-then-optimize approach.
The best example I can think of to argue against “hiding” the inner product inside of a DM instead of a Mat is that it could be used for automatically scaling the KKT systems solved in interior point methods (e.g., IPOPT); poorly-scaled problems arise sometimes in applications. Admittedly, these inner products tend to be diagonal, and thus there may be a better interface or abstraction for this functionality.
> On Apr 12, 2018, at 13:28, Stefano Zampini <stefano.zampini at gmail.com> wrote:
>
> The gradient norm is the one induced by the mass matrix of the DM associated with the control.
> In principle, TaoGradientNorm() can be replaced by DMCreateMassMatrix() + solve with the mass matrix.
>
> For PDE constrained optimization, the “gradient norm” is crucial, since we consider optimization problems in Banach spaces.
> We should keep supporting it, maybe differently than as it is now, but keep it.
>
>> On Apr 12, 2018, at 11:21 PM, Jed Brown <jed at jedbrown.org> wrote:
>>
>> Are you thinking about this PR again?
>>
>> https://bitbucket.org/petsc/petsc/pull-requests/506
>>
>> There's an issue here that Krylov methods operate in the discrete inner
>> product while some higher level operations are of interest in
>> (approximations of) continuous inner products (or norms). The object in
>> PETSc that endows continuous attributes (like a hierarchy, subdomains,
>> fields) on discrete quantities is DM, so my first inclination is that
>> any continuous interpretation of vectors, including inner products and
>> norms, belongs in DM.
>>
>> "Munson, Todd" <tmunson at mcs.anl.gov> writes:
>>
>>> There is a bit of code in TAO that allows the user to change the norm to
>>> a matrix norm. This was introduced to get some mesh independent
>>> behavior in one example (tao/examples/tutorials/ex3.c). That
>>> norm, however, does not propagate down into the KSP methods
>>> and is only used for testing convergence of the nonlinear
>>> problem.
>>>
>>> A few questions then: Is similar functionality needed in SNES? Are
>>> TAO and SNES even the right place for this functionality? Should
>>> it belong to the Vector class so that you can change the inner
>>> products and have all the KSP methods (hopefully) work
>>> correctly?
>>>
>>> Note: that this discussion brings us to the brink of supporting an
>>> optimize-then-discretize approach. I am not convinced we should
>>> go down that rabbit hole.
>>>
>>> Thanks, Todd.
>
More information about the petsc-dev
mailing list