[petsc-dev] Integrating PFLOTRAN, PETSC & SAMRAI

Boyce Griffith griffith at cims.nyu.edu
Mon Jun 6 15:21:21 CDT 2011



On 6/6/11 4:16 PM, Barry Smith wrote:
>
> On Jun 6, 2011, at 3:14 PM, Boyce Griffith wrote:
>
>>
>>
>> On 6/6/11 3:55 PM, Barry Smith wrote:
>>>
>>> On Jun 6, 2011, at 2:50 PM, Boyce Griffith wrote:
>>>
>>>> I maintain similar SAMRAI-PETSc stuff, although I'm only synched up with PETSc 3.1, not petsc-dev.  VecNorm caching caused me endless grief until I started making lots of calls to PetscObjectStateIncrease(), both in the Vec routines and in the Mat/nonlinear function wrappers.
>>>>
>>>> If you are "building your own" Vec class, is there a better/safer way to ensure that cached Vec data is properly invalidated?
>>>
>>>     Hmm, in theory the "base" vector class that calls your implementation is suppose to manage the cache/state stuff, for example VecAXPY() updates the state of the y vector. So this should not be problem except in nonlinear function evaluates where YOU are changing the vector entries directly and need to update the state.  Of course, there could be bugs in some of our base Vec classes, please report any you know about and we'll get them fixed.
>>
>> All I can tell you is that, many years ago, at least some of these calls to PetscObjectStateIncrease() were needed in the Vec routines in order to get PETSc solvers to work with the SAMRAI PETSc Vec class.  To try to avoid the issues that Bobby is reporting, I went ahead and made any Vec routine that could conceivably result in an invalidation of cached Vec data call PetscObjectStateIncrease().  I probably went overboard and call it unnecessarily in some places.
>>
>> I will work on systematically removing these calls and report any problems.
>>
>> Besides nonlinear function evalutations, is it also necessary in implementations of MatVecMult/MatVecMultAdd/etc?  Or should these also be handled automatically by PETSc?
>
>
>     In theory the MatMult/Add etc also update the state but it is possible that some obscure ones do not have it implemented properly.

Could calls to PetscObjectStateIncrease be added to SNES so that they 
are not needed anywhere in wrapper/application code?

-- Boyce



More information about the petsc-dev mailing list